1

データbufをファイルに書き込むための最良の方法はどれですか?

char buf[1024];
FILE *fp = fopen("test", "a+");
  1. fwrite(buf, 1, 1024, fp);
  2. fwrite(buf, 1024, 1, fp);
  3. for (i = 0; i < 1024; i++) fwrite(buf, 1, 1, fp);
  4. または別のより高いパフォーマンスの方法?
4

2 に答える 2

4

ループは遅いです。おそらく非常に遅い。おそらく、ループの本体putc()よりもうまくいくでしょう。fwrite()

最初の2つのオプションの違いは、戻り値です。最初の出力は1024シングルバイトで、完全に成功した場合は1024を返し、失敗した場合はそれよりも小さい数を返します。2番目は1024バイトの単一ユニットを出力します。すべてを書き込む場合は1を返しますが、すべてを書き込むことができない場合は0を返します。それが重要かどうかは、短い書き込みが発生した場合に何をするかによって異なります。戻り値を除いて、2つは同等です。

少なくともファイルストリームに固執している間は、代替のより高性能な方法はありません。ファイル記述子に切り替えると、より多くのオプションが開きますがwrite、データの1回の呼び出しで十分です。

于 2013-02-25T04:24:52.940 に答える
0

1と2は同じになります...しかし、私は1を実行しますが、次のようになります:-

fwrite(buf, sizeof(char), 1024, fp);
于 2013-02-25T04:17:43.877 に答える