第六章——字符型数据 拓展节02——字符串长度函数strlen

第六章——字符型数据 拓展节02——字符串长度函数strlen

亓翎_Re-Tikara Lv5

字符串长度函数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. 1
  2. 3
  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
2
3
4
5
\t   --> 水平制表符
\v --> 垂直制表符
\\ --> 一个反斜杠 \
\0 --> 空字符(字符串结束标志)
w i l l \n

  但注意:在字符串中,\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 进行许可。