繁体   English   中英

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

[英]Why doesn't the printf statement execute here after entering some text and pressing the “enter” key (EOF)?

该代码源自“ The C Programming Language,第二版”:

#include <stdio.h>

main()
{
  long nc;

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

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

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

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

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

while(getchar() != EOF)

至:

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

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

您可能要考虑购买一本更新的书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM