第六章——字符型数据 拓展节02——字符串长度函数strlen
字符串长度函数strlen
- 字符串长度函数strlen
- 格式:strlen(字符数组)
- 功能:计算字符串长度
- 返值:返回字符串实际长度,不包括‘\0’在内
题目示例
例 对于以下字符串,strlen(s)的值为:
(1)char s[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’};
(2)char s[ ]=“\t\v\\0will\n”;
(3)char s[ ]=“\x69\082\n”;
答案:
- 1
- 3
- 1
解析
(1)char s[10] = {'A', '\0', 'B', 'C', '\0', 'D'};
这是一个字符数组初始化,注意是 显式地列出每个字符,而不是使用字符串字面量初始化。
数组内容如下:
| 下标 | 字符 |
|---|---|
| 0 | ‘A’ |
| 1 | ‘\0’ |
| 2 | ‘B’ |
| 3 | ‘C’ |
| 4 | ‘\0’ |
| 5 | ‘D’ |
| 6 | ‘\0’(默认填充) |
| 7 | ‘\0’ |
| 8 | ‘\0’ |
| 9 | ‘\0’ |
strlen(s)是从第一个字符开始计算,直到遇到第一个\0(空字符)为止。- 第一个
\0在下标为 1 的位置,所以strlen(s)只计算到'A'。
✅ 答案:strlen(s) = 1
(2)char s[] = "\t\v\\\0will\n";
这是一个字符串字面量初始化。我们需要理解其中的转义字符:
字符串内容为:
1 | \t --> 水平制表符 |
但注意:在字符串中,\0 是字符串的终止符。也就是说,strlen(s) 遇到这个 \0 就会停止。
字符串实际内容如下(以可见形式表示):
1 | \t \v \\ \0 w i l l \n |
strlen(s)会在遇到第一个\0时停止。\t,\v,\\是三个有效字符,后面是\0。
✅ 答案:strlen(s) = 3
(3)char s[] = "\x69\082\n";
继续解析这个字符串中的每个字符:
\x69是十六进制转义字符,对应 ASCII 码值为0x69 = 105,对应的字符是'i'。\0是八进制转义字符,表示空字符。82中的8不是一个合法的八进制数字(只能是 0~7),因此\08被视为非法转义序列。
但在 C 语言中,对于非法的八进制转义如 \08,编译器通常会将 \0 视为一个单独的空字符,然后把 8 当作普通字符处理。
所以字符串的实际内容是:
1 | i \0 8 2 \n |
strlen(s)会在第一个\0处停止。
✅ 答案:strlen(s) = 1
✅ 最终答案汇总:
| 编号 | strlen(s) |
|---|---|
| (1) | 1 |
| (2) | 3 |
| (3) | 1 |
- 标题: 第六章——字符型数据 拓展节02——字符串长度函数strlen
- 作者: 亓翎_Re-Tikara
- 创建于 : 2026-02-07 02:21:28
- 更新于 : 2026-02-10 02:48:46
- 链接: https://re-tikara.fun/Blog/posts/db9cac41/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。