- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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.4 用二进制方式向文件读写一组数据 一般调用形式为: fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 10.3.4 用二进制方式向文件读写一组数据 buffer:是一个地址 对fread来说,它是用来存放从文件读入的数据的存储区的地址 对fwrite来说,是要把此地址开始的存储区中的数据向文件输出 size:要读写的字节数 count:要读写多少个数据项 fp:FILE类型指针 例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))==NULL) { printf(cannot open file\n); return; } for(i=0;iSIZE;i++) if(fwrite(stud[i], sizeof(struct Student_type), 1,fp)!=1) printf(file write error\n); fclose(fp); } 10+4+4+15=33,实际上开辟36字节,是4的倍数 当前路径下的文件 int main() { int i; printf(“enter data of students:\n); for(i=0;iSIZE;i++) scanf(%s%d%d%s, stud[i].name,stud[i].num, stud[i].age,stud[i].addr); save( ); return 0; } 为了验证在磁盘文件“stu.dat”中是否已存在此数据,可以用以下程序从“stu.dat”文件中读入数据,然后在屏幕上输出。 #include stdio.h #include stdlib.h #define SIZE 10 struct Student_type { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; int main( ) {int i; FILE *fp; if((fp=fopen(stu.dat,rb))==NULL) {printf(cannot open file\n); exit(0); } for(i=0;iSIZE;i++) {fread (stud[i],sizeof(struct Student_type),1,fp); printf (“%-10s %4d %4d %-15s\n”, stud[i].name,stud[i].num, stud[i]. age,stud[i].addr); } fclose (fp); return 0; }
您可能关注的文档
- B独立执行20150203正和中州地产项目要点.ppt
- lesson1口译认识解析.ppt
- B级英语考试写作模板要点.ppt
- Lesson3EpidemicsExplained解析.ppt
- C#Ch8(人邮)要点.ppt
- Lesson5The.Facts解析.ppt
- Cell生产方式解析.ppt
- C#程序设计第一章:c#编程基础要点.ppt
- Lesson5Thefacts解析.ppt
- c#面向对象程序设计要点.ppt
- 国家卫生健康委机关服务局2025年面向社会公开招聘工作人员笔试高频难、易错点备考题库及完整答案详解1.docx
- 国家体育总局体育科学研究所2024年公开招聘笔试高频难、易错点备考题库及参考答案详解.docx
- 广东广州市花都区花山镇和郁小学临聘教师招聘笔试高频难、易错点备考题库及答案详解1套.docx
- 台山市林业局招聘笔试高频难、易错点备考题库附答案详解.docx
- 四川凉山甘洛县事业单位从服务期满的“三支一扶”项目人员中招聘4人笔试备考题库含答案详解.docx
- 四川泸州泸县气象局见习基地招收见习人员2人笔试备考题库参考答案详解.docx
- 四川攀枝花市审计局下属事业单位考调工作人员笔试高频难、易错点备考题库带答案详解.docx
- 四川广安岳池县公安局招聘警务辅助人员15人笔试备考题库及参考答案详解一套.docx
- 四川省综合地质调查研究所2025年考核招聘11人笔试高频难、易错点备考题库及完整答案详解1套.docx
- 四川省地质调查研究院测绘地理信息中心2025年考核招聘8人笔试备考题库及答案详解一套.docx
文档评论(0)