将数据 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()
循环体做得更好。
前两个选项的区别在于返回值。第一个输出 1024 个单字节,如果完全成功则返回 1024,如果失败则返回一些较小的数字。第二个输出1024字节的单个单元;如果将它们全部写入,它将返回 1,但如果未能将它们全部写入,则返回 0。这是否重要取决于您在短写时可能会做什么。除了返回值,两者是等价的。
至少在您坚持使用文件流时,没有其他更高性能的方法。切换到文件描述符打开了更多选项,但是write
对数据的一次调用可能就和它一样好。
1 和 2 将是相同的......但是,我会做 1,但就像:-
fwrite(buf, sizeof(char), 1024, fp);