使用很多调用fprintf;我应该什么时候使用fflush?

时间:2014-07-31 18:48:42

标签: c printf fflush

我有一个简单的小程序,可以将一种文件类型转换为另一种文件类型。 fprintf()有很多调用(大致线性地依赖于要转换的文件的大小)。当我开始时,没有调用fflush()。在小文件(<10 Kb)上没有任何问题。在一个较大的文件(> 40 Kb)上,当达到fclose()的调用时,整个事情就崩溃了。

所以,我想也许我让缓冲区填满了太多东西,所以我在大约* 512次调用fprintf(其中每个调用打印出8到10个字符)之后调用fflush()。该程序在调用fclose()时仍然崩溃。

*因为我实际上没有计算对fprintf的调用,并且我正在使用该程序中已有的其他计数,所以此数字可能小于512。

这让我想到了我的问题。什么时候应该调用fflush()?应该在一定数量的数据被打印之后调用吗?或者我有什么遗失的东西?

由于

顺便说一句,如果它是相关的,我是在Windows 7(64位)上,并且我在&#34; a +&#中打开了输出文件34;模式

1 个答案:

答案 0 :(得分:5)

在没有一次调用fprintf的情况下,尽可能多次调用fflush是完全合法的。崩溃是由程序中的其他内容引起的,很可能是一些无效的内存访问,添加fflush调用无法修复它们。