2015-06-24 88 views
-1

我有代碼:while循環不斷重演

int c; 
while((c = getchar()) != EOF) 
    putchar(c); 

據我所知EOF等於-1 我讀-1從鍵盤(輸入流),它必須停止本身,而是循環不斷重複。 爲什麼?

+6

嘗試使用Ctrl + d或Ctrl + Z –

+1

如果你的意思是你輸入兩個字符'-1',那麼它不會停止(字符只會被回顯,EOF通過文件末尾:'Ctrl-Z'(Windows)或'Ctrl-D'(Unix) – TripeHound

+0

請注意,在Windows控制檯中,當Ctrl-Z緊跟在'newline'後面時,它只會被識別爲'EOF' ,否則它被視爲值'26'。 –

回答

2

-1實際上是兩個單獨的字符-1,它不等同於EOF。在Windows上使用Ctrl + d或在Windows上使用Ctrl + z

2

As @SouravKanta暗示:您的循環一次只能讀取一個字符,因此如果您輸入-1,則會讀取-,然後是1,它們都不指示EOF。我相信Cntl-d是你想要的,至少在* nix(你沒有指定平臺)。