データbufをファイルに書き込むための最良の方法はどれですか?
char buf[1024];
FILE *fp = fopen("test", "a+");
fwrite(buf, 1, 1024, fp);
fwrite(buf, 1024, 1, fp);
for (i = 0; i < 1024; i++) fwrite(buf, 1, 1, fp);
- または別のより高いパフォーマンスの方法?
ループは遅いです。おそらく非常に遅い。おそらく、ループの本体putc()
よりもうまくいくでしょう。fwrite()
最初の2つのオプションの違いは、戻り値です。最初の出力は1024シングルバイトで、完全に成功した場合は1024を返し、失敗した場合はそれよりも小さい数を返します。2番目は1024バイトの単一ユニットを出力します。すべてを書き込む場合は1を返しますが、すべてを書き込むことができない場合は0を返します。それが重要かどうかは、短い書き込みが発生した場合に何をするかによって異なります。戻り値を除いて、2つは同等です。
少なくともファイルストリームに固執している間は、代替のより高性能な方法はありません。ファイル記述子に切り替えると、より多くのオプションが開きますがwrite
、データの1回の呼び出しで十分です。
1と2は同じになります...しかし、私は1を実行しますが、次のようになります:-
fwrite(buf, sizeof(char), 1024, fp);