繁体   English   中英

为什么getchar()不适合我?

[英]Why is getchar() not working for me?

我刚刚开始编程c,我正在通过Brian W.Kernighan和Dennis M.Richie的C编程语言工作。

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

#include <stdio.h>

main()
{
   long nc;

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

为什么这不起作用?

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

作为上述答案的补充,以下是按Enter时如何使程序显示结果

 #include <stdio.h>

main()
{
   long nc;

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

getchar()是缓冲输入。 由于它是缓冲的, The control will wait until you press键盘上的Enter键。 在你的程序中,你正在检查EOF

while (getchar() != EOF)

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

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

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

您必须通过按CTRL + D (对于Linux)或CTRL + Z (对于Windows)来结束while循环来将EOF发送到程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM