2012-09-17 385 views
0

可能重複:
EndOfFile in C - EOF爲什麼不能退出此代碼?

我給K & R.嘗試的例子,我無法理解爲什麼除非按下ctrl+c這個代碼不退出。

int main () 
{ 
    int c; 
    c = getchar(); 
    while(c!=EOF) 
     { 
      putchar(c); 
      c=getchar(); 
     } 
} 

任何幫助表示讚賞。謝謝!

編輯:使用Windows(Visual Studio 2010中)

+0

在哪個系統上試用? Windows? Unix? Linux?你如何輸入EOF? (通常Ctrl + D在Linux上) – BigMike

+0

你怎麼輸入EOF –

回答

5

EOF是文件結束。如果從「鍵盤」讀,你應該比較線符號的結束等於按下回車鍵

int main () 
{ 
    int c; 
    c = getchar(); 
    while(c!= '\n') 
    { 
     putchar(c); 
     c=getchar(); 
    } 
} 
+0

我認爲這對我來說更容易在代碼中使用。謝謝! – Shash

8

在Windows中,按按Ctrl + ž產生從標準輸入流文件的末尾。根據緩衝行爲,您可能還需要按返回

+0

+1簡潔,整潔,正確。 – BigMike

+0

@BigMike謝謝,雖然不夠正確,但未能閱讀原始海報的主意。 :) – unwind

+0

OP問如何陷阱EOF,而不是\ n,因此這是正確的答案恕我直言。如果該程序在管道中使用,則將EOF上的測試更改爲\ n上的測試將簡單地將其中斷。 – BigMike

-1
On Windows machine ctrl+c acts as delimiter of character scanning same as EOF 
on this loop gets broken otherwise it will keep looking for characters 
+0

不起作用.. – Shash

+0

對不起,ctrl + c應該在那裏 –