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

dav*_*ave 2 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); 
}
Run Code Online (Sandbox Code Playgroud)

按"输入"键(EOF)后为什么不执行"printf"语句?

det*_*tly 6

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

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