EOF在Mac Xcode(C)中不起作用?

时间:2017-06-16 06:14:39

标签: c

我正在运行这个字符计数.c但是除非我按下控制D,否则不会达到EOF,这非常烦人。

#include <stdio.h>
main () {

   long nc;

   nc = 0;

   while (getchar() != EOF) {
       ++nc;
   }

   printf("%ld\n", nc);

}

1 个答案:

答案 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;
}

希望这有帮助。