「教えて!ピックアップ」リリース!

プログラムについての質問です。

fflush(stdout)はいったいどのような時に使われているのですか?
意味を調べると、バッファのフラッシュとか
書いてありますが、それをすると結局どうなるのか、
メリットは何かまでは、調べても説明されていません。
使い道がよく分からず困っています。
よろしくお願いします。

A 回答 (3件)

メリットどうこうで考える関数ではないですね



prinitf("hello");
とプログラムに書いたとしましょう
そうすると画面に何が出てくると思いますか?
hello?Windows系のOSなのであればそう出てくるかも知れませんが
Unix系のOSだと実は何も出てきません

では「hello」という文字列はどこに言ったのか
これはバッファというところに一度格納されます
それを明示的に表示するように指定しなければ
バッファに格納されたままになってしまします(プログラムが終了するときに表示されるとは思いますが)

それを行うことが出来るのがfflush(stdout)です
でもいつもそんなことしなくても画面に出てる!!
って思うかもしれません
printf("Hello World!\n")
って多分やりましたよね、このときは普通に出たと思います

それは出力の仕様上
\nが、つまり改行が入力されたらバッファから吐き出されるようになっているのです
なので、一文の最後に必ず改行をつけていれば
特に意識的に使う必要のない関数なんです

後はバッファの容量が限界に達すると自動的に吐き出されます

でも、改行をいれずに出力したいときも出てくるでしょうから
そういうときに使用しますね
    • good
    • 4
この回答へのお礼

詳しい説明、ありがとうございます

お礼日時:2017/05/09 16:45

プロセスが異常終了した場合に、バッファ内容が消えることがあるので、出力を確定させるため


複数プロセスにて同時に出力している際に、内容ができるだけ混ざらないように、出力タイミングを制御するため
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2017/05/14 11:57

以下参考に。



http://www.c-tipsref.com/reference/stdio/fflush. …

ようするに出力データの最後に中途半端な残りが出る可能性があるような処理の際、それを忘れず綺麗に出力するためのものです。

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2017/05/09 16:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


人気Q&Aランキング