getchar() 无限循环

Getchar() infinite loop

我开始向 "The C Programing Language" 学习,书中的代码之一对我不起作用。此代码假设使用 getchar().

计算字符数

这是我的代码:

#include <stdio.h>

int main()
{
  long nc;

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

  return 0;
}

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

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

当您按下 ENTER 时,getchar() 收到一个换行符:\n,您的程序会像计算其他字符一样计算它。

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

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

./your_program < your_file

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