为什么getchar()不适合我?

时间:2013-12-27 00:16:18

标签: c getchar

我刚刚开始编程c,我正在使用Brian W.Kernighan和Dennis M.Richie的C编程语言。

第一个例子之一是字符计数,并给出了以下程序,但是当我输入一个字符串时,没有打印结果。

#include <stdio.h>

main()
{
   long nc;

   nc = 0;
   while (getchar() != EOF)
          ++nc; 
   printf("%ld\n",nc);
 }

为什么这不起作用?

4 个答案:

答案 0 :(得分:10)

您必须完成输入。您的程序将对字符进行计数,直到遇到EOF为止。键盘中的EOF可以通过按 Ctrl-Z 然后 ENTER 发送,如果你在Windows中,或 Ctrl-D 如果您使用的是Linux / OS X,则 ENTER

答案 1 :(得分:3)

作为对所提及答案的补充,以下是在按Enter时如何让您的程序显示结果

 #include <stdio.h>

main()
{
   long nc;

   nc = 0;
   while (getchar() != '\n')
          ++nc; 
   printf("%ld\n",nc);
 }

答案 2 :(得分:1)

getchar()是缓冲输入。由于它是缓冲的,因此键盘上的The control will wait until you press 输入键。 在您的计划中,您正在通过

检查EOF
while (getchar() != EOF)

在Windows上,如果需要EOF,则必须输入2个键的组合。即 Ctrl + Z 。 如果你在LINUX上,那么EOF是2个键的组合 Ctrl + D

如前所述,控制将在控制台等待,直到您按 Enter ,因此您必须按

  • Ctrl + Z 在Windows上输入
  • Ctrl + D 在LINUX上输入

答案 3 :(得分:0)

你必须按 CTRL + D (对于linux)或 CTRL + Z (对于Windows)发送EOF以结束while循环