fprintf()函数无法将数据持久保存到文件中; 必须跟着fflush()函数?

egr*_*dlo 3 c c++ io

我正在使用fopen()函数打开一个文件来编写,并返回一个FILE指针.然后我使用此指针fprintf(),但数据不会持久保存我对文件的写入.这是直接IO/O_DIRECT相关,还是有什么问题?

Wil*_*ill 5

您需要调用fflush(),或者只是fclose()在写完文件时调用文件.fclose()将在关闭前尝试冲洗.此行为是ISO C和POSIX的一部分,因此您可以依赖它.有关更多信息,请参见此处fclose():

刷新流,然后关闭与该流关联的文件.然后,该函数释放与流关联的所有缓冲区.刷新意味着将未写入的缓冲数据写入文件,并丢弃未读缓冲数据.

如果您继续写入文件并且从不刷新或关闭它,则在足够的写入排队后,操作系统将"准备好"时将数据刷新到文件中.