打印字符串中最长的单词

时间:2015-06-14 14:07:16

标签: c

我写了以下代码

#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 而不是程序员

如何解决这个问题,有人给我一个手

2 个答案:

答案 0 :(得分:2)

for循环的终止条件错误。它应该是:

    for(i = 0; i < strlen(str) + 1; i++)

此外,由于在字符串末尾您拥有' ',但您有'\0',您应该更改:

    if (str[i] != ' ')

为:

    if (str[i] != ' ' && str[i] != '\0')

答案 1 :(得分:0)

问题应该是显而易见的。当您正在检查的角色是空格时,您只更新找到的最长的单词。但是在测试字符串中最长的单词之后没有空格,因此更新代码永远不会为它执行。

你可以在循环之后填充这段代码,这应该可以解决问题。

但是请注意,通过添加显示此功能进度的printfs,您可以轻而易举地找到它。