1106文件随机读写
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言内涵教程
周二强 zeq126@ 中国铁道出版社
第11章 文件(06)
11.5文件随机读写 要点: 文件的随机读写与文件的顺序读写 既可读又可写的文件 刷新缓冲区
11.5文件随机读写
存取数据时,文件的当前位置指针变量指明了进行操作 的存储空间的起始位置,完成存取操作后,它会自动指 向下一个位置。通常文件只能顺序读写。 如果可以调整文件的当前位置指针变量指向的位置,就 可以读写文件中“指定位置”上的数据,这就是所谓的 文件随机读写了。 库函数fseek可以改变文件的当前位置指针变量的值。
库函数rewind
Windows系统中,读写文本文件时可能会发生'\r''\n'与 '\n' 的自动转换,从而使计算结果出现偏差,因此,fseek 函数多用于以二进制格式打开的文件。 fseek(fp, 0, SEEK_SET)的作用?
库函数rewind的首部为void rewind(FILE *stream),可用 于将与stream相关的文件的当前位置指针变量指向文件的 开始处。
例11-10 文件的随机读
11.5.2 既可读又可写的文件
C语言允许对一个打开的文件既读又写。用fopen函数打 开文件时,如果在文件使用方式中附加一个“+”号,则 打开的文件就既可读又可写了。 如:文件使用方式"r"表示打开的文件为文本格式的只读 文件,而"r+"则表示打开的文件为文本格式的既可读又可 写的文件。
重定位
对于既可读又可写的文件,读写操作转换时须将文件的 当前位置指针变量重定位。 所谓重定位就是用库函数指定文件的当前位置指针变量 指向的位置。
重定位操作会刷新缓冲区,即将缓冲区中的内容更新到 文Байду номын сангаас中。
例11-11 可读写的文件
提示:
须慎重使用可读写的文件。一方面,文件的读写操作在 转换时需刷新缓冲区,读写数据的效率不高; 另一方面,可读写文件中的当前位置指针变量通常由程 序管理,容易出现错误。
fseek函数int fseek(FILE *stream, long offset, int origin)
形参origin用于表明指定位置的参照点,可取值为宏SEEK_SET、 宏SEEK_CUR 和宏SEEK_END,分别表示参照点为文件的开始、文 件的当前位置和文件的末尾。这三个宏在stdio.h中定义为0、1和2。 offset称为偏移量,表明当前位置需以参照点为基准,向文件结 束处(大于0时)或向开始处(小于0时)移动的字节数(offset的 绝对值)。 fseek函数把与stream相关的文件的当前位置指针变量赋值为由 origin 和offset计算出的值,若操作成功则返回0,否则,返回某个 非零值。