2012-04-28 5 views
1

このような簡単な質問をして申し訳ありませんが、私はまだC言語を学んでいて、まず基礎を学びます。文字カウントプログラムは何も出力していませんか?

文字カウントプログラムを作成していますが、プログラムを実行して「h」などを入力してEnterキーを押すと、新しい行が表示され、その行に何も出力されません。

コード:

#include <stdio.h> 

/* Copy input and count characters 2nd version */ 

main() { 
    double cc; 
    for(cc = 0; getchar() != EOF; ++cc); 
    printf("%.0f\n", cc); 
} 

答えて

5

あなたは文字の入力が完了したら、あなたはCtrl-Dを押して、入力ストリームの終わりを合図しなければなりません。さもなければ、あなたのプログラムはより多くの入力を待っていきます。

P.S.カウンターにdouble変数を使用しているのはなぜですか?整数型がより適切でしょう。

+0

をそれがフロートの長さの2倍ではないですか?私はちょうどそれが使用する方が良いと思った。 – TheBlueCat

+0

@TheBlueCat: 'cc'はちょうどカウンターなので、その型の最良のデフォルト選択は' int'です。 – NPE

0

for()の後に;が余分にあるかもしれません。これは空文を意味します。だから、あなたのプログラムは入力の終わり(入力が端末の場合はCTRL+Dが必要かもしれません)まで空のステートメントを実行します(言い換えれば何もしません)。

入力にあるすべての文字の後にカウンタを印刷する場合は、;を削除して、printfがループします。

+0

私が読んでいる本によれば、それは "Null statement"のためです – TheBlueCat

+0

まあ、私はあなたが何をしたいのか正確には分かりませんでした。もしあなたが空のループを使いたいなら(そして入力の最後にだけ印字する)、aixの答えは本当に良いです。 – asaelr

-2

は、あなたが出力を取得します最後に、この行を含める:

return 0; 
関連する問題