在线编译器 C

#include <stdio.h> int my_strlen(char s[]) { int len = 0; while (s[len] != '\0') len++; return len; } int main() { char s[1001] = {0}; scanf("%s", s); printf("%d", my_strlen(s)); return 0; }
这段代码实现了一个自定义的字符串长度函数 my_strlen,并在 main 中读取一个字符串然后输出其长度。整体逻辑是正确的,但有一个潜在问题。

- 使用 scanf("%s", s) 读取字符串时,遇到空格或换行会停止,因此无法处理包含空格的输入。如果题目要求读取整行(包括空格),需要改用 fgets 或 gets(但 gets 不安全)。
- 数组大小设为 1001,但 scanf 不会检查输入长度,如果输入超过 1000 个字符会导致缓冲区溢出。可以考虑限制读取长度,比如 scanf("%1000s", s)。