错误的C程序输出错误

Vla*_*nov 1 c

嗨,大家好我只是使用Notepad ++和Cygwin在C中使用这个小程序.所以代码如下:

#include <stdio.h>

int main()
{
        int c, i, countLetters, countWords;
        int arr[30];

        countLetters = countWords = 0;
        for(i = 0; i < 30; ++i)
            arr[i] = 0;

        while(c = getchar() != EOF)
                if(c >= '0' && c <= '9')
                    ++arr[c - '0'];

                else if (c == ' ' || c == '\n' || c == '\t')
                    ++countWords;

                else
                    ++countLetters;

        printf("countWords = %d, countLetters = %d\n",
        countWords, countLetters );
}
Run Code Online (Sandbox Code Playgroud)

但不是计算单词,程序将单词计为字母并将其打印为字母和单词= 0 ...我错了,因为即使我的老师也不能给我一个答案......

cni*_*tar 8

尝试使用大括号和c = getchar()需要括号.

while((c = getchar()) != EOF) {
      ^             ^
     /* Stuff. */
}
Run Code Online (Sandbox Code Playgroud)


Ing*_*ngo 6

错误在这里:

while(c = getchar() != EOF)
Run Code Online (Sandbox Code Playgroud)

您需要将赋值括在括号中,如下所示:

while( (c = getchar()) != EOF)    /*** assign char to c and test if it's EOF **/
Run Code Online (Sandbox Code Playgroud)

否则,它被解释为:

while(c = (getchar() != EOF))    /** WRONG! ***/
Run Code Online (Sandbox Code Playgroud)

即每个char读取的c为1,直到文件结束.