2

代码源自“The C Programming Language, Second Edition”:

#include <stdio.h>

main()
{
  long nc;

  nc = 0;
  while(getchar() != EOF)
    ++nc;
  printf("%s: %ld\n", "number of characters", nc); 
}

为什么按下“enter”键(EOF)后“printf”语句不执行?

4

2 回答 2

7

回车键不是EOF。根据您的系统,它将发送回车符(0x0D 或'\r')、换行符(0x0A 或'\n')或两者都发送。

在 Linux(可能还有 Unix)上,可以通过 Ctrl+D 发送 EOF。在 Windows 上,它应该是 Ctrl+Z(但之后您可能需要按 Enter 键)。

于 2010-11-09T15:26:45.073 回答
1

如果要在按键printf后执行该操作ENTER,则应将其更改为:

while(getchar() != EOF)

到:

while(getchar() != '\n')

EOF(文件结尾)与 ENTER 不同。

你可能想考虑买一本更新的书。

于 2010-11-09T15:29:29.237 回答