2
我是C編程和Ubuntu的新手。我被馬克·裏奇閱讀「C程序設計語言」,我發現下面的代碼:爲什麼我需要按兩次CTRL + D才能在Ubuntu 14.10中打開`while((c = getchar())!= EOF)`?
#include <stdio.h>
int main()
{
int c;
int nc=0;
while((c = getchar()) != EOF)
{
nc++;
}
printf("%d Characters \n",nc);
return 0;
}
但在運行程序時,我輸入「你好」,然後CTRL + d兩次得到字符的實際數量是5
但是,當我輸入「你好」,然後CTRL + d一次,什麼都不會發生,終端仍等待輸入。
爲什麼?
我認爲CTRL + D發送'EOF'如果沒有任何數據要刷新到'stdin'。 –
http://stackoverflow.com/questions/29746522/why-is-some-code-from-kr-not-working-in-codeblocks/29746577#comment47630286_29746577 –
@ CoolGuy我跟着上面的鏈接,發現了Veritas的評論有幫助。謝謝你的幫助。但是如果我在「Hello」之後按下「ENTER」,然後CTRL + D一次,字符數就會變成6.我認爲除了'你好'之外,還需要一個額外的字符「\ n」。不是嗎? –