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

#include <stdio.h> int suma(char a[]) { int i = 0,count_save=0,count=0; while(a[i] != '\n' && a[i] != '\0') { if(a[i]==' '){ count_save=count; i++; count=0; return count_save; }count++; i++; } return count; } int sum(char a[]) { int size=suma(a); if(a[0]==a[size-1]){ return 1; }return 0; } int main() { char a[1001]={"Anna went to kayak school"},c ; int answer = 0,i=0; while((c=getchar())!=EOF){ a[i]=c; i++; } answer=suma(a); printf("%d\n", answer); return 0; }
这段代码试图从输入中读取一行文本,然后找出第一个单词的长度并输出。但代码中存在逻辑错误,导致它不能正确工作。

主要问题在于 `suma` 函数:当遇到第一个空格时,它立即返回 `count_save`,但此时 `count_save` 的值是上一个单词的长度(初始为0),而不是当前单词的长度。而且 `return` 语句会直接结束函数,导致循环中断,无法继续处理后续字符。

- 在 `suma` 函数中,当遇到空格时,你希望返回的是当前单词的长度,但代码中返回的是 `count_save`,而 `count_save` 在遇到空格前刚被赋值为 `count` 的旧值。思考一下:在遇到空格时,`count` 已经记录了当前单词的长度,应该返回哪个变量?
- 另外,`sum` 函数虽然定义了,但在 `main` 中并没有被调用。`main` 中调用了 `suma` 并打印结果,但 `suma` 的返回值是第一个单词的长度,而不是你最终想要的答案。请明确你的程序目标是什么。