2012-03-21 20 views
0

私はそれを実行すると、なぜこのコードは何もしませんか?それは文字を数えることになっている 私は誰かが提案したctrl + zを押しても、ランダムなものを入力した後に何文字を印刷するかはまだありません。私は窓を使用していますなぜこのコードカウント文字はありませんか?

#include <stdio.h> 

int main() 
{ 
    long nc; 
    nc = 0; 

    while (getchar() != EOF) 
    ++nc; 

    printf("%ld\n", nc); 

    return 0; 
} 
+0

どのIDEを使用していますか? –

+0

私のために働く: '$。/ keys' ' jasdasjdnasdjasndas' '20' – trojanfoe

+0

コードは機能しています。より多くの文字の読み込みを停止するには、EOFを指定する必要があります。次に、入力された文字数を表示します。 – Juho

答えて

2

CTRL+Zを押して入力してください。これによりEOFがトリガーされます。あなたはそれはあなたがEnterキーを押すと終了したい場合は

while(getchar() != '\n') 
0

your.exe < your_input.fileを呼び出してみてくださいまたはちょうどCtrl+Zを押して使用し、getchar関数は、()、無限ループがある一方であるため、その後EnterEOF

+0

ああ神私は入力を押して忘れて..ありがとう男 – latenightcode

-2

を取得します。

これで、プロセスを終了するまでループを終了することはありません。

+1

printfはまだ印刷されます。 –

+2

'while(getchar()!= EOF)'なので、ループは終了します。スタンダードは使い果たされている。 – delnan

+0

あなたは正しいですが、キーボードでは通常EOF charを書くのが難しく、ファイルは入力ストリームではありません。それで、あなたが何を数えたいかによって決まります。たとえ入力ファイルの長さを数えたいなら、getchar()のループでそれを読むのはエレガントな方法ではないからです。 – kappa

1

サンプルはUNICODE = 1でコンパイルされていますか?その後、WEOFと比較する必要があります。

1

^Dを使用して、プログラムにEOF信号を供給することができます。 多くの時間^ Zは動作しません。

関連する問題