fflush-如何检查上次操作是否为输出操作
fflush - how to check if last operation was output operation
来自std::fflush文档(http://en.cppreference.com/w/cpp/io/c/fflush):
使输出文件流与实际文件的内容。如果给定流为输入类型的,或者如果给定流是更新类型的,但是上一次I/O操作不是输出操作。
我需要对文件调用fflush才能在磁盘上获取其大小,但我不知道最后一次操作是输入还是输出。有没有办法检查FILE上的最后一个操作是否是输出操作,以防止未定义的行为?
来自文档:
在为更新而打开的文件中(即为读取和写入而打开),在执行输入操作之前,应在输出操作之后刷新流这可以通过重新定位(fseek、fsetpos、倒带)或显式调用fflush来完成
然后,您应该简单地避免调用fflush
(即使对于打开I/O的文件来说是安全的),并使用fseek
来移动光标。
相关文章:
- 标记为 std::memory_order_seq_cst 的单个原子操作是否会在所有位置触发顺序一致性?
- blaze-lib 的元素操作是否自动并行?
- 静态断言添加操作是否可用
- 如果矩阵密集且不对称,特征库矩阵/矢量操作是否比 .net 矩阵/向量操作更快?
- 编译器中的布尔值为 8 位.对它们的操作是否效率低下
- 在 C++ 中使用 try-catch 进行删除 [] 或删除操作是否必要
- 对 NULL 值的按位操作是否会使C++中的代码崩溃
- 嵌套原子操作是否保证为原子操作
- 常量操作是否在运行时计算
- 堆栈弹出操作是否可以安全地返回 C++11 中的值
- fflush-如何检查上次操作是否为输出操作
- 当使用头与完整矩阵复制源时,mophological操作是否有错误
- 取模操作是否更快,功率为 2,即使在编译时该值未知
- 在 && 语句的后半部分进行无效操作是否安全?
- 当 std::fprintf(stderr,..) 失败时,操作是否不起作用,或者可以在失败之前写入一点
- STL 向量上的重复操作是否允许"Inherent Parallelism"/改进的内存访问?
- FUSE getattr操作是否应该始终串行化
- 按位操作是否比调用memcpy更快
- 在boost MPL中,如何检查操作是否按预期工作
- 该指针操作是否有其他语法?