字符串问题及关于字符串的函数
1,char* strcpy(char* dest, char* src);把src指向的以NULL结束的字符串复制到dest所指的数组中。函数返回指向dest指针。
注:1,接收字符串的数组或指针所指的内存区域一定要大于被复制的字符串长度, 否则系统可能由于字符长度不够而被恶意修改。
2,dest和src所指向的内存区域不可以重叠。
3,函数返回指向dest的指针。
4,复制时会连同字符串结束符'\0'一同复制到目的数组dest中。
5,可以使用参数指定复制字符串长度:strcpy(str,"People need not to work on Sunday!",10);
将这条字符串的前10个字符复制到str中。但在有些编译器中并不支持这种方式。
6,在工程中,通常以自定义的strcpy函数。
7,strcpy()是覆盖式的复制,是从起始位置开始覆盖,如果原来字符串够长,只会从头开始部分覆盖。
2,char* strcat(char* dest,char* src);字符串连接函数,其使用方法和strcpt()类似。
3,int* strcmp(char* str1,char* str2);功能:对两字符串比较,根据两者大小返回不同的数值。
注:a,从左到右的顺序逐个字符比较,如下:
当str1>str2时,函数返回大于零的数,通常返回值为1
当str1<str2时,函数返回小于零的数,通常返回值为-1
当str1=str2时,函数返回0
b,当有一个字符比较出来时,其它的就不作比较了
4,int strlen(char* str);功能:计算字符串长度,不计算结束字符'\0',返回提字符串的实际长度
5,若dest为NULL,使用strcat函数时会产生什么错误?
如果这样,那么程序将会崩溃,因此调用函数之前务必检查dest指针或数组是否为空,若为空,则禁止调用strcat函数。
6,若src赋为NULL,调用strcat是否出错?
会,C语言的strcat对输入的两个指针参数都进行了入参的检测,因此,src为空时的情况同上,都会出现崩溃的情况。
7,若str中的字符串长度大于dest定义的长度,调用strcat时,是否会出现错误?
不会,strcat函数不检查src和dest的长度匹配,但如果那样的话,会使内存读写越界,从而发生严重的内存泄露。
8,字符串比较函数strcmp是否允许两个输入参数都为NULL?
不允许,和所有的字符串处理函数一样,strcmp函数不允许输入参数为NULL,若出现这种情况,程序将出现崩溃
1,char* strcpy(char* dest, char* src);把src指向的以NULL结束的字符串复制到dest所指的数组中。函数返回指向dest指针。
注:1,接收字符串的数组或指针所指的内存区域一定要大于被复制的字符串长度, 否则系统可能由于字符长度不够而被恶意修改。
2,dest和src所指向的内存区域不可以重叠。
3,函数返回指向dest的指针。
4,复制时会连同字符串结束符'\0'一同复制到目的数组dest中。
5,可以使用参数指定复制字符串长度:strcpy(str,"People need not to work on Sunday!",10);
将这条字符串的前10个字符复制到str中。但在有些编译器中并不支持这种方式。
6,在工程中,通常以自定义的strcpy函数。
7,strcpy()是覆盖式的复制,是从起始位置开始覆盖,如果原来字符串够长,只会从头开始部分覆盖。
2,char* strcat(char* dest,char* src);字符串连接函数,其使用方法和strcpt()类似。
3,int* strcmp(char* str1,char* str2);功能:对两字符串比较,根据两者大小返回不同的数值。
注:a,从左到右的顺序逐个字符比较,如下:
当str1>str2时,函数返回大于零的数,通常返回值为1
当str1<str2时,函数返回小于零的数,通常返回值为-1
当str1=str2时,函数返回0
b,当有一个字符比较出来时,其它的就不作比较了
4,int strlen(char* str);功能:计算字符串长度,不计算结束字符'\0',返回提字符串的实际长度
5,若dest为NULL,使用strcat函数时会产生什么错误?
如果这样,那么程序将会崩溃,因此调用函数之前务必检查dest指针或数组是否为空,若为空,则禁止调用strcat函数。
6,若src赋为NULL,调用strcat是否出错?
会,C语言的strcat对输入的两个指针参数都进行了入参的检测,因此,src为空时的情况同上,都会出现崩溃的情况。
7,若str中的字符串长度大于dest定义的长度,调用strcat时,是否会出现错误?
不会,strcat函数不检查src和dest的长度匹配,但如果那样的话,会使内存读写越界,从而发生严重的内存泄露。
8,字符串比较函数strcmp是否允许两个输入参数都为NULL?
不允许,和所有的字符串处理函数一样,strcmp函数不允许输入参数为NULL,若出现这种情况,程序将出现崩溃