在线编译器 C

#include <stdio.h> int my_strlen(char s[]){ int i = 0; while (s[i]!= '\0'){ i++; } return i-1; } int main() { char a[1001]; scanf("%[^\n]", a); printf("%d", my_strlen(a)); return 0; }
这段代码定义了一个 `my_strlen` 函数,试图计算字符串长度,然后在 `main` 中读取一行输入并输出长度。但函数返回 `i-1` 而不是 `i`,这会导致结果比实际长度少 1。

- 检查 `my_strlen` 函数中 `while` 循环的结束条件:当遇到 `\0` 时循环停止,此时 `i` 的值是多少?想想字符串 `"abc"` 的遍历过程。
- 对比标准库 `strlen` 的行为:它返回字符串中字符的个数(不包括结尾的 `\0`)。你的函数返回 `i-1`,试着用简单字符串(如 `"a"`)在脑中模拟一遍,看看结果是否正确。