c - 什么是 C 中的更新流?
问题描述
在 n1256 7.19.5.2 第 2 段(用我的粗体字):
如果 stream 指向未输入最近操作的输出流或更新流,则 fflush 函数会导致该流的任何未写入数据被传递到主机环境以写入文件;否则,行为未定义。
如果没有“更新流”这个词,整个段落就会有意义。但我不知道它是什么。标准本身并没有介绍它。谷歌搜索似乎不起作用。它的意义是什么?
解决方案
在此上下文中,术语“更新”表示为读取和写入而打开的文件。
该术语用于C99 标准fopen
第 7.19.5.3 节中的函数规范:
3参数
mode
指向一个字符串。如果字符串是下列之一,则文件以指示的模式打开。否则,行为未定义。r打开文本文件进行阅读
w将长度截断为零或创建文本文件以进行写入
追加;打开或创建文本文件以在文件末尾写入
rb打开二进制文件进行读取
wb截断为零长度或创建二进制文件进行写入
ab附加;打开或创建二进制文件以在文件末尾写入
r+打开文本文件进行更新(读写)
w+截断为零长度或创建文本文件进行更新
a+附加;打开或创建文本文件以进行更新,在文件末尾写入
r+b或rb+打开二进制文件进行更新(读写)
w+b或wb+截断为零长度或创建二进制文件进行更新
a+b或ab+附加;打开或创建二进制文件进行更新,在文件末尾写入
...
6当以更新模式打开文件时(“+”作为上述
mode
参数值列表中的第二个或第三个字符),可以在关联的流上执行输入和输出。但是,如果没有对函数fflush
或文件定位函数(fseek
、fsetpos
或rewind
输入操作遇到文件结尾。在某些实现中,使用更新模式打开(或创建)文本文件可能会打开(或创建)二进制流
推荐阅读
- r - 错误代码“'closure'类型的对象不是子集”的问题
- javascript - 在 react datepicker 中设置和获取 localStorage 中的日期和时间
- c# - PHP 上的 C# ECKey 模拟
- java - 模块化 FXML 控制器 JavaFX 上的 hostServices
- css - 基于英寸而不是像素的 CSS @Media 查询
- python - 如何在字典中创建范围
- javascript - react.js 如何实现多输入搜索?
- python - pandas 根据组 min max 动态交叉加入
- r - R - 仅识别列中以 A 和 B 结尾的字符串
- google-sheets - 如何在谷歌表格中选择输入行