僅供參考,我在The C Programming Language, Second Edition中複製此示例(幾乎)來自第18頁的信件。for循環不執行循環外的任何指令
#include <stdio.h>
/*count characters in input, 2nd version*/
main(){
double n;
for (n = 0; getchar() != EOF; ++n)
;
printf("%.0f\n", n); /*this never prints*/
}
我不知道這是否是我的版本的gcc(我是小白):
% gcc --version
gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Copyright (C) 2010 Free Software Foundation, Inc.
因爲
for (n = 0; getchar() != EOF; ++n)
printf("%.0f",n); /*returns...n*/
我試着打印 「富」,而不是值n,只是爲了看。它仍然沒有打印。
我在這裏錯過了什麼?我不喜歡前進,而忽略像這樣的小問題。
=====================================
編輯
所以,最終的結果應該是:
% gcc ./counter.c -o ./counter
% ./counter
foo
3
眼下,這是從第一段的輸出結果:
% ./counter
foo
,第二個:
% ./counter
foo
^C
%
您期望它做什麼?它應該計算你輸入一個字符的次數,然後打印出這個數字,如果我理解正確的話 –
除了'for'行末尾的';'不應該在那裏,你必須在控制檯中輸入一個字符,並且每次執行'for'循環時按Enter鍵,因爲在用戶輸入字符並按下Enter鍵後,getchar不會返回。 –
你爲什麼用'double'來計算字符數?一個'unsigned long'將會大得多(除非你正在給你的程序提供多GB的輸入文件)。順便說一句,你通常不應該在你的問題中包含答案;這是(接受的)答案的目的。 –