《C语言程序设计》第10章文件的应用.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 项目中文件的应用 在前面的章节中,我们学习了结构体这种构造数据类型,它主要是为了存储复杂的数据,在第9章中,我们通过学生信息管理系统来实现对批量数据的处理,但这些批量数据只能在程序执行时占据内存,程序结束后即从内存消失。那么添加学生信息等操作每次都要重新执行。如何将数据永久保存起来,即将输入输出的数据以磁盘文件的形式存储起来,这些内容是本章需要解决的问题。 本章将结合学生信息管理系统项目中学生信息的存储和重载,学习文件的概念、分类、文件指针和文件操作等相关知识。 学习目标: 理解和掌握文件的概念、文件的打开、文件的关闭; 理解和掌握文件的读写操作。 10.1 任务二 项目中数据的存储 一、任务描述 在主函数中,通过InputStu()函数添加学生信息,添加完后,应将学生信息保存在磁盘文件中。在浏览、删除等操作中,首先要将数据读入到结构体数组中,对结构体数组进行操作,操作完成后,再将结构体数组中的数据保存到文件中。该任务将用SaveStu()函数将结构体数组存入到“list.dat”文件中,用LoadStu()函数实现将“list.dat”文件中的数据导入到结构体数组中。 二、任务涉及知识要点 本任务涉及到的新知识点主要有文件的打开、读写、关闭等操作。 三、任务分析 实现学生信息的处理和保存,可以用LoadStu()函数和SaveStu()函数实现读取和存储。该项目中虽然定义了能够处理的最大学生数N,但是由于从文件中读取或者通过函数InputStu()输入的学生数量是不定的,所以在LoadStu()、InputStu()函数中均要统计读取或输入的学生数量。在调用SaveStu()函数进行数据保存时,也要将数组元素的个数作为实参传入,以确定要保存的数组元素个数。考虑到数据分多次录入的情况,SaveStu()可采用追加和覆盖两种方式写入文件。 由于要对学生信息数组stu[]和学生实际人数同时进行传递,因此在函数的参数定义中采用结构体数组和指针,如void LoadStu(struct student stu[],int *stu_number);,这样可以使学生信息结构体数组stu[]和学生人数stu_number在各个函数之间进行传递。 四、任务实现 各函数的定义分别为: 1.学生信息的读取函数 void LoadStu(struct student stu[],int *stu_number) { FILE *fp; int i=0; if((fp=fopen("list.dat","rb"))==NULL) { printf("不能打开文件\n"); return ; } while(fread(&stu[i],sizeof(struct student),1,fp)==1 && i<N) i++; *stu_number=i; //重置学生记录个数 if (feof(fp)) fclose(fp); else { printf("文件读错误"); fclose(fp); } return ; } 2.学生信息的保存函数 void SaveStu(struct student stu[],int count,int flag) { FILE *fp; int i; if((fp=flag?fopen("list.dat","ab"):fopen("list.dat","wb"))==NULL) { printf("不能打开文件\n"); return; } for(i=0;i<count;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("文件写错误\n"); fclose(fp); } 3.增加学生记录函数 void InputStu(struct student stu[],int *stu_number) { char ch='y'; int count=0; while((ch=='y')||(ch=='Y')) { system("cls"); printf("\n\t\t 增加学生记录 \n"); printf("\n\n\t\t 请输入学生信息\n"); printf("\n学号:"); scanf("%d",&stu[count

文档评论(0)

autohhh + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档