第10章 对文件的输入输出.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章对文件的输入输出整理ppt

(4)用r+、w+、a+方式打开的文件,既可以读,也可以写。 (5)用rb,wb,ab方式打开文件,是二进制方式打开。不用字母b,是文本方式打开。 两种打开文件方式之间的区别: 1)用文本方式打开文件,若向文件写一个换行符,则实际写进去的是两个字符:回车符(ASCII码13)和换行符( ASCII码10)。(写,一个变两个)。 ? 当读取文件时,遇到回车符和换行符相邻,则读出后将它们合并成一个换行符存入内存。(读,两个变一个) 2)用二进制方式打开,不进行以上处理。内存中的数据形式与写到文件中的数据形式完全一致 以上是两种打开文件方式之间的唯一区别。 注意:打开方式只决定着“回车换行”问题,即要不要一个变两个(写文件)或两个变一个(读文件)的问题,与数据的读写方式无关。 数据的读写方式只取决于读写时所用的函数,与打开文件的方式无关。 10.3 顺序读写数据文件 有以下几种读写函数 : (1)字符读/写函数,每次读写一个字符 (2)字符串读/写函数,每次读写一个串 (3)格式读/写函数,按指定格式读写 (4)块读/写函数,每次读写一块数据 函数feof(FILE* fp) 功能:测试对fp指向的文件的读操作是否已经到达文件尾,即越过文件结束标志EOF(-1),若越过,返回非0,否则返回0. 比如文件中存了字符串123,读三次,读出123后,文件的位置指针指向文件结束标志,此时函数feof()的返回值是0。 再读一次,读出文件结束标志,位置指针越过结束标志。此时,feof()的返回值是非0。 文件尾在文件结束标志后面。 (2) int fseek(FILE* fp,long offset,int base); 作用:改变文件标记。返回当前位置,或-1 offset是位移量,指以起始点为基点,向文件尾或文件头移动的字节数。如果是正数,向文件尾移动,如果是负数,向文件头移动。 位移量是long型数据(在数字的末尾加一个字母L)。 10.5 文件读写的出错检测 1.ferror函数 ferror函数的一般调用形式为 ferror(fp);  如果返回值为0,表示未出错,否则表示出错 每次调用输入输出函数,都产生新的ferror函数值,因此调用输入输出函数后立即检查 调用fopen时,ferror的初始值自动置为0 10.5 文件读写的出错检测 2. clearerr函数 作用是使文件错误标志和文件结束标志置为0 调用一个输入输出函数时出现错误(ferror值为非零值),立即调用clearerr(fp),使ferror(fp)值变0,以便再进行下一次检测 只要出现文件读写错误标志,它就一直保留,直到对同一文件调用clearerr函数或rewind函数,或任何其他一个输入输出函数 10.3.3用格式化的方式读写文件 一般调用方式为: fprintf(文件指针,格式字符串,输出表列); fscanf (文件指针,格式字符串,输入表列); 如: fprintf (fp,”%d,%6.2f”,i,f); fscanf (fp,”%d,%f”,i,f); 读写成功,返回读写数据的个数;读写不成功返回EOF 10.3.4 用二进制方式向文件读写一组数据 以上函数都是用文本方式读写文件。 二进制方式读写文件的函数原型: int fread(char* buffer,unsigned size,unsigned count,FILE* fp); 功能:从fp所指向的文件,读count个长度为 size字节的数据,存入buffer所指的内存空间 10.3.4 用二进制方式向文件读写一组数据 int fwrite(char* buffer,unsigned size,unsigned count,FILE* fp); 功能:将buffer所指内存空间中的数据,写到fp所指向的文件中,每次写size个字节,写count次。 读写成功,返回count值;不成功,返回0 例10.4 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。 解题思路: 定义有10个元素的结构体数组,用来存放10个学生的数据 从main函数输入10个学生的数据 用save函数实现向磁盘输出学生数据 用fwrite函数一次输出一个学生的数据 #include stdio.h #define SIZE 10 struct Student_type { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; void save( ) { FILE *fp; int i; if((fp=fopen(stu.dat,wb))==

文档评论(0)

zyzsaa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档