字符串操作的相关函数
函数名 功能说明
strlen 计算字符串的长度(不包括终止符 \0)。
strcpy 将源字符串复制到目标字符串(包括终止符 \0)。
strncpy 将指定长度的字符串复制到目标字符串,未复制部分用 \0 填充(适合固定长度的字符串复制)。
strcat 将源字符串追加到目标字符串的末尾(包括终止符 \0)。
strncat 将指定长度的源字符串追加到目标字符串的末尾。
strcmp 比较两个字符串的大小(按字典顺序),返回值小于0表示第一个字符串小于第二个,大于0则相反。
strncmp 比较指定长度的两个字符串的大小。

具体要用的时候再去查,这些函数都存在或多或少的问题,这是 C 语言本身的问题,操作字符串及其麻烦,你务必每次主要空字符\0 的记录。

惯用法

遍历字符串

1
2
3
4
5
6
7
size_t xy_strlen(const char* s) {
const char* start = s; // 字符串 s 的首地址
while (*s) {
s++;
}
return s - start;
}

当然,如果你还想省略,那也是可以的,见下:

1
2
3
4
5
size_t xy_strlen(const char* s) {
const char* start = s; // 字符串 s 的首地址
while (*s++) { ; }
return s - start;
}

复制字符串

1
2
3
4
5
6
7
8
9
char* xy_strcat(char* p, const char* s) {
const char* start = p;
while (*p)
{
p++;
}
while (*p++ = *s++) { ; }
return start;
}

前面的遍历字符串其实就是遍历到字符串的末尾,因此这里利用它到达末尾,就可以开始考虑字符串的复制了。