【发布时间】:2018-11-25 02:30:15
【问题描述】:
我编写了一个程序来查找字符串中的最长单词并打印最长单词中的字母数。但是代码没有打印。我对程序分析了很多次,但找不到解决方案。
#include <stdio.h>
#include <string.h>
int main() {
char string[100] = "Hello Kurnool";
int i = 0, letters = 0, longest = 0;
start:
for (; string[i] !=' '; i++) {
letters++;
}
if (letters >= longest)
longest = letters;
if (string[i] == ' ') {
letters = 0;
i++;
goto start;
}
printf("%d", longest);
return 0;
}
【问题讨论】:
-
阅读how to debug small programs。编译所有警告和调试信息:
gcc -Wall -Wextra -g和 GCC。改进您的代码以获得没有警告。 use thegdbdebugger。请注意 stdout 已缓冲(因此请使用fflush或以\n结束每个printf格式字符串...) -
不要使用 goto。
-
你不检查字符串结尾更改测试
for(;string[i]!=' ' && string[i]!=0;i++) -
为什么要避免
goto:因为 Dijkstra told us 在 1968 年 -
嘿伙计们,你们听说过 goto 被认为是有害的吗!?让我们辩论一下吧,肯定以前没有人这样做过。