串
串是由字符组成的有限序列。C 语言中字符串通常使用字符数组表示,并以 \0 作为结束标记。
一、字符串定义
char s1[] = "hello";
char s2[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
这两种写法等价。
二、字符串结束符
C 字符串必须以 \0 结尾,否则标准字符串函数无法判断结束位置。
h e l l o \0
三、常用函数
| 函数 | 作用 |
|---|---|
| strlen | 求字符串长度 |
| strcpy | 复制字符串 |
| strncpy | 限长复制 |
| strcat | 拼接字符串 |
| strcmp | 比较字符串 |
| strchr | 查找字符 |
| strstr | 查找子串 |
使用字符串函数时要特别注意目标缓冲区大小。
四、常见风险
- 缓冲区溢出;
- 忘记
\0; - 使用未初始化字符数组;
strcpy导致越界;- 字符数组和字符指针混淆。
五、安全建议
- 明确传入缓冲区长度。
- 优先使用限长函数。
- 初始化数组。
- 拼接前检查剩余空间。
- 不直接信任外部输入。
六、练习
- 实现
strlen。 - 实现字符串反转。
- 判断回文串。
- 查找子串位置。
- 统计每个字符出现次数。