C语言中的字计数程序没有输出

C语言中的字计数程序没有输出,c,C,我是C语言的新手。我最近了解了getchar()函数。我写了一个程序来计算输入中的字数。程序如下:(我使用的是代码块): #包括 main(){ int c,nw;/*nw表示字数*/ 而((c=getchar())!=EOF){ 如果(c=''| | c='\t'| | c='\n') ++西北; } printf(“字数为:%d”,nw); } 当我运行程序时,它接受输入,但没有输出。不管你按多少次回车键,它都会继续输入 我曾无数次地试图寻找这个问题,但都找不到答案 但是,有人告诉我在wh

我是C语言的新手。我最近了解了getchar()函数。我写了一个程序来计算输入中的字数。程序如下:(我使用的是代码块):

#包括
main(){
int c,nw;/*nw表示字数*/
而((c=getchar())!=EOF){
如果(c=''| | c='\t'| | c='\n')
++西北;
}
printf(“字数为:%d”,nw);
}
当我运行程序时,它接受输入,但没有输出。不管你按多少次回车键,它都会继续输入

我曾无数次地试图寻找这个问题,但都找不到答案

但是,有人告诉我在while循环中包含Ctrl+D中断。我试着这么做,但结果是一样的

如果有人有解决办法,请帮助我。在过去的两周里,我一直在努力解决这个问题


谢谢

循环将在遇到
EOF
(-1)时结束

不管你按多少次回车键,它都会继续输入

因为
“\n”!=EOF

要刺激EOF

  • 如果使用windows/DOS,请按CTRL+Z。这后面必须跟回车
  • 如果您在UNIX/Linux/OSX上,请按CTRL+D。这将刷新
    stdin
    有要刷新的字符。否则,它会将
    EOF
    发送到
    stdin


顺便说一句,正如其他人所注意到的,您需要将
nw
初始化为0。另外,
main
的签名应该是
int main(void)

将取消条件更改为不同的值,如“q”或您需要初始化的值,否则,您将得到奇怪的输出。ctrl-d代表nix,ctrl-z代表windows。未初始化的
nw
将给出错误的结果(在Roy的回答中提到)。0)
nw
初始化为0,
nw=01)添加
\n
,printf(“字数为:%d\n”,nw);2) 尝试输入,然后按ctrl+d或ctrl+z,然后按enter键。
#include <stdio.h>

main(){
int c, nw;       /*nw stands for NUMBER OF WORDS*/

while((c=getchar())!=EOF){
    if (c==' '||c=='\t'||c=='\n')
        ++nw; 
}

printf("NUMBER OF WORDS ARE:%d",nw);
}