我正在运行这个字符计数.c但是除非我按下控制D,否则不会达到EOF,这非常烦人。
#include <stdio.h>
main () {
long nc;
nc = 0;
while (getchar() != EOF) {
++nc;
}
printf("%ld\n", nc);
}
答案 0 :(得分:3)
您所看到的是预期的行为。
输入流结束时遇到EOF 。你在做什么(我猜)是按回车键。这并不表示EOF,因为您可以在输入后输入更多内容。 Ctr + D表示文件的结尾。
你能做的就是寻找End Of Line。 而且您还需要查找EOF,因为用户可以通过按Ctr + D终止 (正如@ DavidC.Rankin所建议的那样)
这可以通过将getchar()与'\n'
和EOF匹配为
int c
while ((c = getchar()) != '\n' && c != EOF) {
++nc;
}
希望这有帮助。