Getchar()无限循环

时间:2018-02-18 08:39:05

标签: c input eof getchar

我开始学习C编程语言"书中的一个代码对我不起作用。此代码假设使用getchar()计算字符数。

这是我的代码:

#include <stdio.h>

int main()
{
  long nc;

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

  return 0;
}

我尝试运行它并写一些字符但是当我按下ENTER时,它只会启动一个新行。它永远不会离开循环。

1 个答案:

答案 0 :(得分:2)

换行符不是EOF。您会混淆EOFEOL

当您按ENTERgetchar()收到换行符\n时,您的程序会像其他任何字符一样计算。

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

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

./your_program < your_file

当您的输入来自文件时,EOF会在到达文件末尾时自动发送到您的程序。那是因为从文件中获取的输出不多。