【问题标题】:Character counting program doesn't output anything字符计数程序不输出任何内容
【发布时间】:2015-12-13 04:15:45
【问题描述】:

我尝试过 Dev-C++ 和 MinGW(32 位),但每次运行代码时,都没有输出。我使用的是 Windows 7。下面是我的代码。

#include<stdio.h>
main()
{
  long nc;
  nc=0;
  while(getchar()!=EOF)
    ++nc;
  printf("Number of chars are %ld ",nc);
}

我也尝试过pressing Ctrl-D to signal the EOF,但它不起作用。当我输入“ rajkumar ”并 [enter] 它什么也没做。当我输入“ rajkumar ”和 ^Z [enter] 两次时,它就结束了。我要问的是为什么它不打印预期的输出?当我第一次尝试它时,它工作了两次,但后来我不知道出了什么问题。

【问题讨论】:

  • 输入后是否回车?
  • 我认为在 Windows 上,不是 C-d 而是 C-z 什么的。
  • 是的,我做到了,除了闪烁的光标什么都没有
  • 也试过C-z,但没有
  • EOF reading C/C++的可能重复

标签: c mingw32


【解决方案1】:

基于this answer,触发EOF检测,

  • 首先执行 ENTER
  • 然后按 controlZ(或 Linux 上的 ^D),它必须位于行首
  • 如果仍未触发检测,请再次按 ENTER

【讨论】:

    【解决方案2】:

    要在 Windows 上发出 EOF 信号,请按 Ctrl-Z,然后按 Enter。

    注意:这是针对 Windows 控制台的。如果您在 IDE 中运行该程序,您的 IDE 可能有也可能没有发送 EOF 信号的方法。

    【讨论】:

      【解决方案3】:

      getchar() 得到一个字符,它也接受 Enter。因此,如果您按 r,然后按 Enter,则只有 r 被输入。所以你需要在按键后按回车。如果没有 Enter,getchar() 将不会接受该字符。

      【讨论】:

      • 但它甚至不打印 r。事实上,我第一次尝试时效果很好
      【解决方案4】:

      尝试在 printf 的末尾添加一个 \n。比如:printf("Number of chars are %ld /n",nc);

      【讨论】:

      • 如果 main 函数返回到它的原始调用者,或者如果调用了 exit 函数,则在程序终止之前关闭所有打开的文件(因此 所有输出流都被刷新)。
      • 除此之外,通过在格式字符串末尾包含 '\n' 已更正了几个问题。 (如果从 .cmd 窗口运行,则很可能在用户看到该输出之前关闭窗口
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多