10. 字符串
定义:在 C 语言中,字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
以下是 C/C++ 中定义的字符串的内存表示:

10.1 C 中有大量操作字符串的函数
| 序号 | 函数 & 目的 | 
|---|---|
| 1 | strcpy(s1, s2); 复制字符串 s2 到字符串 s1。string copy | 
| 2 | strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。string catenate | 
| 3 | strlen(s1); 返回字符串 s1 的长度。string length | 
| 4 | strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。string compare | 
| 5 | strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 | 
| 6 | strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 | 
10.2 字符串初始化时需要对 \0 特别注意
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
 
如果没有在字符数组最后增加 \0 的话输出结果有误:
// 初始化字符串
char greeting[5] = { 'H', 'e', 'l', 'l', 'o' };
printf("Greeting message: %s\n", greeting);
 
输出结果:
Greeting message: Hello烫烫烫?侵7(?╔?╚╔╔
 
10.3 strlen 与 sizeof的区别
strlen 是函数,sizeof 是运算操作符,二者得到的结果类型为 size_t,即 unsigned int 类型。
sizeof 计算的是变量的大小,不受字符 \0 影响;
而 strlen 计算的是字符串的长度,以 \0 作为长度判定依据。


















