C

时间:2015-06-04 12:47:18

标签: c

我是C语言的新学习者。我最近了解了 getchar()函数。我写了一个程序来计算输入中的单词数。该计划如下:(我使用代码):

#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);
}

当我运行程序时,它接受输入,但没有OUTPUT。无论你输入多少次,它都会继续输入。

我试图搜索这一百万次,但我找不到答案。

然而,有人告诉我在while循环中包含Ctrl + D中断。我尝试这样做但结果相同。

请有人有解决方案帮助我。从过去两周开始,我试图找出问题所在。

谢谢!

1 个答案:

答案 0 :(得分:5)

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

  

无论你输入多少次,它都会继续输入。

因为'\n' != EOF

刺激EOF

  • 如果您使用的是Windows / DOS,请按 CTRL + Z 。必须紧接着 Enter
  • 如果您使用的是UNIX / Linux / OSX,请按 CTRL + D 。这会刷新stdin有要刷新的字符。否则,它会将EOF发送到stdin
正如其他人注意到的那样,BTW需要将nw初始化为0.此外,main的签名应为int main(void)