我正在编写一个程序,它使用getchar
从用户处获取字符并对它们进行计数。当用户输入EOF时,它应该停止,打印出字符数并打印完成。代码:关于EOF的getchar的奇怪行为
char cur = 0;
int count = 0;
while((cur = getchar()) != EOF){
++count;
}
printf("\n%d", count);
printf("\ndone\n");
但是,循环不停止,直到用户输入2个连续的EOF。 我试图强制循环停止通过手动检查如果字符是EOF和打破循环,但它似乎并没有工作。
如何在一次EOF后停止?
用户如何“输入”EOF?这不是关键,而是以某种方式发出信号的条件。你按什么键? – chux
键入的EOF键(Linux上的“Ctrl-D”,Windows上的Ctrl-Z)必须是'newline'后面的第一个字符。即使如此,我还没有弄清楚它为什么有时需要键盘上的一个以上'EOF'。 –
我在Linux上使用CTRL + D –