这是将数据buf写入文件的最佳方法

时间:2013-02-25 04:14:36

标签: c file-io

将数据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. 还是其他更高性能的方式?

2 个答案:

答案 0 :(得分:4)

循环缓慢;可能很慢。很可能,你在循环体中使用putc()而不是fwrite()做得更好。

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

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

答案 1 :(得分:0)

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

fwrite(buf, sizeof(char), 1024, fp);