【问题标题】:Why is getchar() not working for me?为什么 getchar() 对我不起作用?
【发布时间】:2013-12-27 00:16:18
【问题描述】:

我刚刚开始编写 c 语言,正在研究 Brian W.Kernighan 和 Dennis M.Richie 的 The C Programming Language。

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

#include <stdio.h>

main()
{
   long nc;

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

为什么这不起作用?

【问题讨论】:

  • 准确地描述“不工作”是什么意思。你的程序编译了吗?当你运行它时,你给它什么输入?你预计会发生什么?

标签: c getchar


【解决方案1】:

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

【讨论】:

  • 或者试试./a.out &lt;somefile
【解决方案2】:

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

 #include <stdio.h>

main()
{
   long nc;

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

【讨论】:

    【解决方案3】:

    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 Enter - 在 Windows 上。
    • Ctrl+D Enter - 在 LINUX 上。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 2016-02-27
        • 2019-01-13
        • 2015-09-07
        • 2023-04-03
        相关资源
        最近更新 更多