- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lh-13文件要点
数据块读写操作示例 数据块读取示例一 要求:从文件 fp 中读取 10 个整数,保存到数组 a 中,已知文件中至少包含 10 个整数 if( fwrite( a, sizeof(int), 10, fp ) != 10 ) printf( Error in reading data. ); 数据块读取示例二 要求:从文件 fp 中最多读取 10 个整数,保存到数组 a 中,文件中包含多少整数未知(可能不够 10 个) 如何实现? 数据块读写操作示例 数据块读取示例二:实现一 数据块数未知,需要边读边判断文件是否结束 错误代码: while( !feof( fp ) ){ int e; if( fread( e, sizeof(int), 1, fp ) != 1 ) printf( Error in reading data. ); ……} 错误结果:程序异常退出 错误原因:fread 函数在读取了 10 个整数后,文件结束标志 EOF 还未读取,文件没有结束,while 循环在试图获得第 11 个整数时;在 feof 函数返回前,fread 就已读取 EOF 标志,返回 0,此时必然导致 if 测试成功 数据块读写操作示例 数据块读取示例二:实现二 不检测 fread 函数返回值也有问题 错误代码: while( !feof( fp ) ){ int e; fread( e, sizeof(int), 1, fp ); ……} 错误结果:获取了 11 个整数,最后两个相同,并且可能会写入错误位置 错误原因:在 feof 函数返回前,fread 就已读取 EOF 标志,返回 0,此时 e 未设置,维持第 10 个整数值不变,并写入第 10 个整数的后续位置 数据块读写操作示例 数据块读取示例二:实现三 简单颠倒分支流程也有问题 错误代码: while( !feof( fp ) ){ int e; if( fread( e, sizeof(int), 1, fp ) == 1 ) …… else printf( Error in reading data. );} 错误结果:程序异常退出 错误原因:与实现一相同 数据块读写操作示例 数据块读取示例二:实现四 不仅要判断 fread 函数返回值是否正确,还需要判断文件操作是否发生错误 正确代码: while( !feof( fp ) ){ int e; if( fread( e, sizeof(int), 1, fp ) == 1 ) …… else if( ferror( fp ) ) printf( Error in reading data. );} 只有在出现错误时才需要输出错误信息,避免 fread 读取到 EOF 标志时流程出现错误 本章小结 文件的定义、性质与分类 文件的基本操作 文件的读写 面向字符的文件读写 面向字符串(文本行)的文件读写 面向格式化输入输出的文件读写 面向数据块的文件读写 数据的持久化 数据持久化的意义 动态数组的持久化 Programming in C 西安电子科技大学计算机学院 - School of Computer Science Engineering, Xidian University, China */ 文件与数据存储 提 纲 文件的基本概念 文件的基本操作 文件的读写 数据存储 小结 文件的基本概念 文件定义 一组相关信息的集合;平时存储在外部介质上,需要时读入内存,操作完毕后再写回外部介质 文件操作 使用标准库函数 文件类型 二进制文件 信息以二进制格式存储 内容不分行,行尾无行结束标志 读写时不发生数据转换,文件中的内容与信息在内存中的存储布局相同 程序容易处理,程序员不容易理解 文本文件 信息以文本(字符串)格式存储 文本分行,行尾有行结束标志 读写时发生数据转换(自动或人工),转换过程可逆 程序容易处理,程序员也容易理解 文件指针 文件指针类型 文件指针类型格式: FILE * 说明:所有对文件的操作都需要使用文件指针类型 文件变量 定义格式:FILE * fp; 说明:要访问某个文件,一定需要首先定义文件指针类型的变量,并将该变量与对应文件关联起来,此后才能进行文件操作 文件的基本操作 文件打开操作 文件关闭操作 文件结束检测操作 文件错误检测操作 文件缓冲区与流刷新操作 文件指针定位操作 文件指针位置查询操作 文件指针重定位操作 文件打开操作 文件打开函数 fopen 函数原型:FILE * f
文档评论(0)