7.9.13/7
次のような状態のセクションc99
:
プログラムの起動時に、3 つのテキスト ストリームが事前定義されており、明示的に開く必要はありません。標準入力 (従来の入力を読み取るため)、標準出力 (従来の出力を書き込むため)、および標準エラー (診断出力を書き込むため) です。
最初に開いたとき、標準エラー ストリームは完全にバッファリングされていません。標準入力および標準出力ストリームは、ストリームが対話型デバイスを参照していないと判断できる場合にのみ、完全にバッファリングされます。
それは理にかなっています。標準出力をファイルにプッシュする場合は、効率のために完全にバッファリングする必要があります。
しかし、デバイスが非対話型 (つまり、端末への通常の出力) であると判断できない場合に、出力がライン バッファーか非バッファーかについて、標準には言及されていません。
私が尋ねる理由は、2 つのステートメントの間に を挿入する必要があるという私の回答へのコメントでした。fflush(stdout);
printf ("Enter number> ");
// fflush (stdout); needed ?
if (fgets (buff, sizeof(buff), stdin) == NULL) { ... }
printf
改行で終了していなかったからです。誰でもこれをクリアできますか?