2016-09-08 9 views
-1
printf("hello2"); 
int i = 0; 
int done = 0; 

while (!done) 
{ 
    char c; 
    printf("hello3"); 
    c = getc(stdin); 
    printf("hello4"); 
    if (isspace(c)) 
    { 
     done = 1; 
     ungetc(c, stdin); 
     printf("hello5"); 
    } 
} 

私のプログラムは現在入力を読み込もうとしています(この場合は特に入力が空です)。しかし、私のプログラムがうまく動作しないことが判明した後、私はprintfsを散らばってデバッグしようとしましたが、c = getc(stdin)の後にプログラムが動作しなくなってしまったようです。私の理論が正しければ、c = getc(stdin)を使って何が問題になっていますか?getc(stdin)の後でプログラムの動作が停止する

+1

各印刷文字列に '\ n 'を追加することで、保証出力がフラッシュされます。問題を識別するのに十分なコードがありません。 – chux

+0

'getc()'は 'int'を返します。典型的には257種類の異なる値' EOF'と 'unsigned char'の範囲の値を返します。 – chux

+0

'printf()'の呼び出しのたびに 'fflush(stdout);を使って、何を印刷すべきかを確認してください。 – MikeCAT

答えて

0

スペースの後にEnterキーを押してみませんか?具体的な取り決めをしない限り、端末エミュレーションやプログラムを実行しているどこでも、入力されたすべてのキーボード文字は表示されません。あなたがenterを押すまで待機し、書かれた行全体を処理させます。

0

Stdinは入力文字を改行文字 '\ n'まで入力ストリームにフラッシュしません。だからgetc(stdin)はあなたがenterを押すまでは何も読まない。 enterを押しずにコンソール入力を読みたい場合は、conio.hライブラリのgetch()関数をWindowsコンパイラで利用できます。 getch()は、改行を待たずにstdinから文字を読み込みます。

関連する問題