我正在編寫一個程序,它使用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 –