【问题标题】:Getchar() infinite loop [closed]Getchar()无限循环[关闭]
【发布时间】:2018-02-18 08:39:05
【问题描述】:

我开始学习“C 编程语言”,但书中的一段代码不适合我。此代码假设使用getchar() 计算字符数。

这是我的代码:

#include <stdio.h>

int main()
{
  long nc;

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

  return 0;
}

我尝试运行它并写一些字符,但是当我按下ENTER 时,它只会开始一个新行。就好像它永远不会跳出循环一样。

【问题讨论】:

  • 这真的是书中的代码吗? getchar != EOF 而不是 getchar() != EOF?

标签: c input eof getchar


【解决方案1】:

换行符不是EOF。你混淆了EOFEOL

当您的新闻ENTERgetchar() 收到一个换行符:\n,并且您的程序会像任何其他字符一样计算它。

尝试按CTRL + D(Linux 终端)或CTRL + Z(Windows 终端)向您的程序发送空输入,从而结束它。

您也可以将输入写入文件,并将此文件作为输入提供给您的程序,如下所示:

./your_program < your_file

当您的输入来自文件时,当到达文件末尾时,EOF 会自动发送到您的程序。那是因为没有更多的输出可以从文件中获得。

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2013-05-04
    • 2020-04-26
    • 2016-07-12
    相关资源
    最近更新 更多