#include<string.h>
size_t strlen(char const *string)返回值是一个无符号数:
①if(strlen(X)-strlen(Y)>=0)和②if(strlen(X)>=strlen(Y))事实上是不相等的。①是必然为真的,因为两个无符号数相减返回值是一个无符号数,必然大于等于零②这种方式可以正确的比较大小。或者我们可以强转成(int)类型。
char* strcpy(char*s,char const*src);
这个函数是要覆盖之前的字符串(以NUL结尾),要保证目标数组有足够的空间来容纳原字符串(C语言不会检测这种错误),如果没有足够的空间,会覆盖原数组后面地址的空间,会造成很多意想不到的麻烦。
char*strcat(char*dst,char const*src);
它要求dst参数必须已经包含一个字符串,(可以使空字符串)。函数找到这个字符串的结尾,并把目标字符串复制到结尾,这个同样要求目标字符数组有足够的空间。
int strcmp(char const*s1,char const*s2)
返回值为0,-1,+1,注意:!当为零时是两个字符串相等;参数必须以NUL结尾,不然一直比较下去没有意义!
下面来谈一下有字符限制的字符串函数:
char*strncpy(char*dst,char const *src,size_t len)
strncpy调用的结果可能不是一个字符串,因为字符串必须以NUL字节结尾,而这个函数结果并不会以NUL字节结尾。要手动在结尾加上,这样才是一个字符串。
char*strncat(char*dst,char const *src,size_t len)
它和strncpy不同,会在在结尾加上NUL字节。
int strncpy(char const*s1,char const*s2,size_t len)
比较两个字符串最多比较len个字节。