我写了以下代码
#include<stdio.h>
int main(void)
{
int i, max = 0, count = 0, j;
char str[] = "I'm a programmer";
for(i = 0; i < str[i]; i++)
{
if (str[i] != ' ')
count++;
else
{
if (max < count)
{
j = i - count;
max = count;
}
count = 0;
}
}
for(i = j; i < j + max; i++)
printf("%c", str[i]);
return 0;
}
打算找到并打印最长的单词,但是当最后一个单词中的最长单词我是程序员时,我打印我&#39; m 而不是程序员
如何解决这个问题,有人给我一个手
答案 0 :(得分:2)
for
循环的终止条件错误。它应该是:
for(i = 0; i < strlen(str) + 1; i++)
此外,由于在字符串末尾您不拥有' '
,但您有'\0'
,您应该更改:
if (str[i] != ' ')
为:
if (str[i] != ' ' && str[i] != '\0')
答案 1 :(得分:0)
问题应该是显而易见的。当您正在检查的角色是空格时,您只更新找到的最长的单词。但是在测试字符串中最长的单词之后没有空格,因此更新代码永远不会为它执行。
你可以在循环之后填充这段代码,这应该可以解决问题。
但是请注意,通过添加显示此功能进度的printfs,您可以轻而易举地找到它。