這個例子來自Dennis Ritchie和Brian Kernighan的「The C Programming Language」。應該輸入用戶輸入的字符,然後當EOF被聲明時(使用我的Mac,它是ctrl-D),它會結束程序並顯示輸入的字符數量。相反,它將字符數量的實際值加倍。我錯過了什麼嗎?謝謝。爲什麼這個字符在C計數程序中將字符的值加倍?
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
因爲你也在計算'newlines'。 'getchar()'讀取*每個*輸入。 –
也用int格式說明符打印一個long。編譯器應該已經警告過你。 – Unimportant
除了你指出的實際問題之外,你的'main'函數應該有一個返回類型。此外,就像@ user1320881所說,你的printf格式說明符是錯誤的。它在GCC中產生以下警告:'格式'%d'需要類型爲'int'的參數,但參數2類型爲'long int' –