代码源自“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”语句不执行?
回车键不是EOF。根据您的系统,它将发送回车符(0x0D 或'\r'
)、换行符(0x0A 或'\n'
)或两者都发送。
在 Linux(可能还有 Unix)上,可以通过 Ctrl+D 发送 EOF。在 Windows 上,它应该是 Ctrl+Z(但之后您可能需要按 Enter 键)。
如果要在按键printf
后执行该操作ENTER,则应将其更改为:
while(getchar() != EOF)
到:
while(getchar() != '\n')
EOF(文件结尾)与 ENTER 不同。
你可能想考虑买一本更新的书。