【问题标题】:fprintf function not working but it returns positive numberfprintf 函数不起作用,但它返回正数
【发布时间】:2013-11-04 09:59:39
【问题描述】:

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

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

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

文件创建成功但为空。

将其更改为 printf 正在打印,OK 也是。

【问题讨论】:

  • 你是如何打开 pFile 的?打开文件的时候检查返回值了吗?
  • 请显示打开文件的代码。
  • 你在打电话给fclose吗?如果没有,缓冲区可能不会被刷新!
  • 如果您不清楚什么是刷新缓冲区stackoverflow.com/questions/15042849/…,这可以帮助 Thomas 回答

标签: c++ c stdio buffering printf


【解决方案1】:

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

当调用fclose,或者通过正确退出程序隐式关闭文件时,缓冲区也会被刷新,但是如果程序在没有关闭文件的情况下继续运行,或者如果它崩溃,你将需要fflush才能看到在文件上输出。

【讨论】:

  • 非常感谢!它帮助了我。 :)
猜你喜欢
  • 2021-01-17
  • 2015-05-31
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2021-12-01
  • 2022-11-16
相关资源
最近更新 更多