fflush-如何检查上次操作是否为输出操作

fflush - how to check if last operation was output operation

本文关键字:操作 是否 输出 何检查 检查 fflush-      更新时间:2023-10-16

来自std::fflush文档(http://en.cppreference.com/w/cpp/io/c/fflush):

使输出文件流与实际文件的内容。如果给定流为输入类型的,或者如果给定流是更新类型的,但是上一次I/O操作不是输出操作。

我需要对文件调用fflush才能在磁盘上获取其大小,但我不知道最后一次操作是输入还是输出。有没有办法检查FILE上的最后一个操作是否是输出操作,以防止未定义的行为?

来自文档:

在为更新而打开的文件中(即为读取和写入而打开),在执行输入操作之前,应在输出操作之后刷新流这可以通过重新定位(fseek、fsetpos、倒带)或显式调用fflush来完成

然后,您应该简单地避免调用fflush(即使对于打开I/O的文件来说是安全的),并使用fseek来移动光标。