2017-09-22 36 views
2

私はgetchar()関数で多くの文字を1つずつ取得する必要があります。flushall()は動作しません - C言語で

機能を使用した後でバッファをクリーニングする必要がありますが、flushall()はそれを行いません。関数の2回目の反復の後、入力として'\n'が得られます。私はfflush()_flushall()を使ってみましたが、誰もこれを成功させることはできません。その理由は何ですか?助けてください。

注:getchar()を使用する必要があります。

int i; 
char c; 
for (i = 0; i < 5; i++) 
{ 
    c = getchar();  
    printf("%c", c); 
    _flushall(); 
} 
+0

コードはどこですか?そしてあなたが何をしようとしているのかは不明です。 –

+1

'_flushall;' => '_flushall();'。あなたは実際に関数を呼び出すのではなく、ポインタを評価する(そして破棄する)だけです。 –

+0

John Bode、_flushall()は機能しません。 alk、なぜ私はフラッシュの代わりにこのすべてを書かなければならないのですか? – Asher

答えて

2

あなたが入力バッファにジャンクを捨てるしたい場合は、それを行うための良い方法は、これが最大破棄し、次の改行またはファイルの終わりを含めます

int c; 
do c = getchar(); while (c != EOF && c != '\n'); 

です通常はあなたが望むものです。

ユーザーがそれぞれのキーを押すたびに1回のキーストロークに応答するプログラムを作成しようとしている場合、これは機能しませんが、stdio.hインターフェイス全体が機能しません。 ncursesやGUIの「ウィジェット」ライブラリなど、別のものを使用する必要があります。

関連する問題