字数统计程序不产生所需的输出

时间:2017-12-22 07:18:03

标签: c word-count

我指的是K& R用于学习C.我没有得到以下代码的所需输出。

#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
    int c,nl,nw,nc, state;
    nl = nc = nw = 0;
    state = OUT;
    while ((c=getchar()!= EOF))
    {
        ++nc;
        if (c == '\n')
        {
            ++nl;
        }
        if (c ==' ' || c == '\n' || c == '\t')
            state = OUT;
        else if (state == OUT)
        {
            state = IN;
            ++nw;
        }
    }
    printf("%d %d %d", nc, nw,nl);
}

我提供了以下输入

the
door is
open

我获得的输出是

17 1 0

请告诉我代码中有什么问题。

1 个答案:

答案 0 :(得分:1)

c=getchar()!= EOF错了。这将首先调用函数getchar()。然后它会将返回值与EOF进行比较。之后,比较结果(1或0)将分配给c

要避免这种情况,请使用(c=getchar()) != EOF instad。

使用if(isspace(c))代替第二个if语句(感谢Lundin指出)

您还应该指定main应该返回一个int以避免警告。