2012-07-19 14 views
0

我是新來的c和ubuntu。我寫了一個非常簡單的程序來計算使用while和getchar()的字符數量。該程序是:無法打印,沒有使用getchar的字符,在ubuntu中

#include <stdio.h> 

main() { 

int i; 
int c= 0; 

while ((i = getchar()) != EOF){ 
c++ ; 
} 
printf("%d characters\n" , c) ; 

return 0; 
} 

我保存並編譯它使用,gcc c1.c -o c1。沒有錯誤報告。我執行了程序,./c1。我把輸入作爲daniweb。我按下回車鍵,但顯示計數。什麼地方出了錯?它是無限循環嗎? get鍵()在鍵盤輸入時如何確定EOF?

+0

計數*爲*顯示或計數*未顯示?輸入完文字後,嘗試輸入Control-D。 – 2012-07-19 19:22:32

回答

1

在終端上,您可以通過按Ctrl + D將EOF發送到應用程序。你也可以這樣做:

echo "blablub" | ./yourprogram 

要計算blablub中有多少個字符。在這種情況下,EOF會自動發送。

1

按enter鍵將新行字符發送到您的程序,而不是EOF。正如其他人已經提到的那樣,使用Ctrl + D發送EOF。如果要停止閱讀換行符,請將while循環更改爲:

while ((i = getchar()) != '\n'){ 
c++ ; 
}