Онлайн компилятор C

#include <stdio.h> int my_strlen(char s[]) { int len = 0; while (s[len] != '.') len++; return len; } int main() { char s[1001] = {0}; scanf("%s", s); printf("%d",my_strlen(s)); return 0; }
这段代码定义了一个自定义的字符串长度函数 `my_strlen`,并在 `main` 中读取一个字符串后输出它的长度。但函数中判断字符串结束的条件写错了,导致结果不正确。

- 在 `my_strlen` 函数里,循环条件是 `s[len] != '.'`,这会让函数在遇到英文句点 `.` 时停止计数,而不是在字符串末尾的空字符 `'\0'` 处停止。字符串在 C 语言中是以 `'\0'` 结尾的,所以应该用 `s[len] != '\0'` 作为循环条件。

- 另外,`scanf("%s", s)` 只能读取不含空格的单词,如果输入包含空格,只会读取空格前的部分。但根据题目要求,可能不需要修改这里。