fprintf功能不起作用但它返回正数

时间:2013-10-25 10:22:07

标签: c++ c stdio buffering printf

我正在以下列方式使用fprintf。一切似乎都没问题,但fprintf根本不打印到我的文件中!

fprintf(pFile, "%s\n", "print");

奇怪的是fprintf返回OK。它在上面的代码中返回6,但不打印到文件!

文件已成功创建,但为空。

将其更改为printf即可打印并OK

1 个答案:

答案 0 :(得分:3)

fprintf和其他stdio输出函数被缓冲,这意味着输出首先存储在内存中,直到稍后才实际打印。使用标准输出打印到屏幕时,每个新行都会刷新缓冲区,因此使用printf可以立即看到输出,但是当打印到文件时,在写入之前不会刷新缓冲区(例如)4096字节。如果由于某种原因需要输出快速显示在文件上,可以添加fflush(pFile);来刷新缓冲区。

调用fclose时也会刷新缓冲区,或者通过正确退出程序隐式关闭文件,但如果程序在不关闭文件的情况下继续运行,或者崩溃,则需要{{1}查看文件的输出。