stdout は端末に接続すると行バッファリングされますが、(少なくとも stdin から) 読み取ると stdout が自動的にフラッシュされることをどこかで読んだことを覚えています。私が使用したすべての C 実装はこれを行っていますが、現在は標準で見つけることができません。
そのように動作することは理にかなっていますが、そうでない場合は次のようにコーディングします。
printf("Type some input: ");
fgets(line, sizeof line, stdin);
余分に必要だろうfflush(stdout);
それで、標準出力はここでフラッシュされることが保証されていますか?
編集:
いくつかの返信が言っているように、私の例では stdout への出力が stdin からの読み取りの前に表示されるという保証は標準にはないようですが、一方で、この意図は (私の無料のドラフトコピー) に記載されています標準:
対話型デバイスの入力および出力ダイナミクスは、7.19.3 で指定されているように行われるものとします。これらの要件の意図は、プログラムが入力を待機する前にプロンプト メッセージが実際に表示されるようにするために、バッファなしまたは行バッファ付きの出力をできるだけ早く表示することです。
(ISO/IEC 9899:TC2 委員会草案 -- 2005 年 5 月 6 日、14 ページ)。
したがって、保証はないようですが、とにかくほとんどの実装でおそらく動作します。(有名な最後の言葉...)