2016-08-01 17 views
-4

program source code OS/XではCでfflushをどのように使うべきですか?私はそれを使用すると、私のバッファをクリアしないで、すぐにプログラムを終了します。OS/Xでfflushをcで使用する方法

+4

'stdin'でfflush-edを教えてください....それは[未定義の動作](https://en.wikipedia.org/wiki/Undefined_behavior)を呼び出します。 –

+2

あなたのコードを[mcve]として表示してください(または私たちすべてのクリスタルボールを購入してください)。 – kaylum

答えて

0

fflush(stdin);を呼び出すと、未定義の動作が呼び出されます。これを標準入力バッファからフラッシュ文字に使用しないでください。代わりに、あなたは次の改行件まで文字を読み、それらを無視することができます

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

ます。また、このためscanf()を使用することができますが、それはトリッキーです:あなたは2つのコールを結合することはできません

scanf("%*^[\n]"); // read and discard any characters different from \n 
scanf("%*c");  // read and discard the next char, which, if present, is a \n 

注意最初の書式が失敗するので、他の文字が先行しない改行を読み取ることができないためです。

関連する問題