目录
一.函数介绍
求字符串长度
strlen
size_t strlen ( const char * str );
字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。
参数指向的字符串必须要以 '\0' 结束。
注意函数的返回值为size_t,是无符号的( 易错 ),如下示例:
长度不受限制的字符串函数
1. strcpy
char* strcpy(char * destination, const char * source );
将源指向的 C 字符串拷贝到目标指向的数组中,包括终止字符 '\0'(并在该点停止),是一种覆盖。
源字符串必须以 '\0' 结束,且目标空间必须可修改。
为避免溢出,destination 指向的数组的大小应足够长,以包含与 source 相同的 C 字符串(包括终止字符 '\0' )。
返回指向目标数组的起始地址,即destination,如下示例:
2. strcat
char * strcat ( char * destination, const char * source );
将源字符串的拷贝追加到目标字符串。destination 中的终止字符 '\0' 被 source 的第一个字符覆盖,并且在 destination 中由两者串联形成的新字符串的末尾包含一个结束字符 '\0'。
源字符串必须以 '\0' 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
返回destination,如下示例:
注意:目的地destination和来源source不得重叠,否则会发生错误,如下示例:
由于目的地和源串是同一块空间,那么目的地的终止字符'\0'被覆盖的同时,源串的终止字符也被修改了,导致了死循环,进而引发了数组的越界访问操作。
3. strcmp
int strcmp ( const char * str1, const char * str2 );
将 C 字符串 str1 与 C 字符串 str2 进行比较。
此函数从每个字符串的第一个字符开始比较,如果它们彼此相等,则继续以下对,直到字符不同或达到终止字符 '\0'。
标准规定:
第一个字符串 > 第二个字符串,则返回大于0的数字
第一个字符串 == 第二个字符串,则返回0
第一个字符串 < 第二个字符串,则返回小于0的数字
如下示例: