嗨,大家好我只是使用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 ...我错了,因为即使我的老师也不能给我一个答案......
尝试使用大括号和c = getchar()需要括号.
while((c = getchar()) != EOF) {
^ ^
/* Stuff. */
}
Run Code Online (Sandbox Code Playgroud)
错误在这里:
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,直到文件结束.