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()循环体做得更好。

前两个选项的区别在于返回值。第一个输出 1024 个单字节,如果完全成功则返回 1024,如果失败则返回一些较小的数字。第二个输出1024字节的单个单元;如果将它们全部写入,它将返回 1,但如果未能将它们全部写入,则返回 0。这是否重要取决于您在短写时可能会做什么。除了返回值,两者是等价的。

至少在您坚持使用文件流时,没有其他更高性能的方法。切换到文件描述符打开了更多选项,但是write对数据的一次调用可能就和它一样好。

于 2013-02-25T04:24:52.940 回答
0

1 和 2 将是相同的......但是,我会做 1,但就像:-

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