fwrite()返回值与文件大小不匹配

时间:2014-12-29 14:27:03

标签: c fwrite

我正在使用fwrite()在循环中将数据写入文件。它会重复40次,但在第一个fwrite()期间,最后几个KB不会写入文件。连续fwrite()工作正常。当我运行单个块时,4000字节fwrite()返回4000,但文件内容小于4000(接近3000字节)。 perror()期间也没有报告错误。请帮助我,并提前感谢。

1 个答案:

答案 0 :(得分:6)

fwrite不会写入文件。该函数写入缓冲的文件流。使用fclose关闭文件或使用fflush刷新缓冲区时,缓冲区将刷新到磁盘。使用适当的函数清空缓冲区。

缓冲区用于获得良好的性能。如果您不关心性能并且需要直接写入磁盘,则可以使用setbufsetvbuf功能禁用缓冲区。 (感谢Barmar的评论)。