我有一个简单的小程序,可以将一种文件类型转换为另一种文件类型。 fprintf()有很多调用(大致线性地依赖于要转换的文件的大小)。当我开始时,没有调用fflush()。在小文件(<10 Kb)上没有任何问题。在一个较大的文件(> 40 Kb)上,当达到fclose()的调用时,整个事情就崩溃了。
所以,我想也许我让缓冲区填满了太多东西,所以我在大约* 512次调用fprintf(其中每个调用打印出8到10个字符)之后调用fflush()。该程序在调用fclose()时仍然崩溃。
*因为我实际上没有计算对fprintf的调用,并且我正在使用该程序中已有的其他计数,所以此数字可能小于512。
这让我想到了我的问题。什么时候应该调用fflush()?应该在一定数量的数据被打印之后调用吗?或者我有什么遗失的东西?
由于
顺便说一句,如果它是相关的,我是在Windows 7(64位)上,并且我在&#34; a +&#中打开了输出文件34;模式
答案 0 :(得分:5)
在没有一次调用fprintf
的情况下,尽可能多次调用fflush
是完全合法的。崩溃是由程序中的其他内容引起的,很可能是一些无效的内存访问,添加fflush
调用无法修复它们。