输入一些文本并按“回车”键(EOF)后,为什么printf语句不执行?

时间:2010-11-09 15:24:19

标签: c printf eof

该代码源自“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); 
}

为什么在按下“回车”键(EOF)后没有执行“printf”语句?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

如果你想在点击 ENTER 键后执行printf,你应该改变它:

while(getchar() != EOF)

为:

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

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

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