C语言程序设计:第10章 对文件的输入输出.ppt

C语言程序设计:第10章 对文件的输入输出.ppt

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
补充:文件读取结束的方法 使用feof()函数 适用于:文本文件和二进制文件 举例(1)L105.c: 在D盘有一文本文件A.txt,要求将文件复制到E盘,并重命名为B.txt文件,并将文件内容输出到屏幕上。 补充:文件读取结束的方法 举例(2) 在D盘有一二进制文件data02.dat,文件中包含不超过50个整数信息,要求读取所有数据,并将数据按从低到高排序,然后将排序后的数据输出到屏幕上和D盘下的文本文件data02.txt中 补充:文件读取结束的方法 举例(3) 在D盘有一二进制文件data_book.dat,文件中包含不超过50个book的信息,要求读取所有书本数据,并按书的价格从低到高排序,然后将所有书本信息输出到屏幕上和D盘下的文本文件data_book.txt中,其中book信息结构如下: struct _Book{ char name[20]; char author[20]; float price; // 价格 } 补充:文件读取结束的方法 使用fseek()函数计算文件数据块个数 步骤: 打开文件 使用fseek(fp,0,SEEK_END)定位文件指针到文件末端 使用size=ftell(fp)计算二进制文件的字节数 使用num = size/sizeof(信息块大小)计算信息块数量 使用fseek(fp,0,SEEK_SET)重新定位文件指针到文件开始位置 使用循环读取num块数据就ok 只适用于二进制文件 举例(2) 补充例题9 设D盘根目录下有一个二进制文件data9.dat,该文件中存放了不超过100个的若干字符。编写一个程序,将该文件中可能的字符'A'替换成字符'#',可能的字符'B'替换成字符'*'。 例10.5 从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。 解题思路: 定义有10个元素的结构体数组,用来存放10个学生的数据 从main函数输入10个学生的数据 用save函数实现向磁盘输出学生数据 用fwrite函数一次输出一个学生的数据 #include <stdio.h> #define SIZE 10 typedef struct Student_type { char name[10]; int num; int age; char addr[15]; }TAGSTUDENT; TAGSTUDENT stud[SIZE]; void save( ) { FILE *fp; int i; if((fp=fopen("stu.dat","wb"))==NULL) { printf("cannot open file\n"); return; } for(i=0;i<SIZE;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;i<SIZE;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;i<SIZE;i++) {fread (&stud[

文档评论(0)

学习让人进步 + 关注
实名认证
内容提供者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档