C语言程序设计学生信息的读取与保存_第1页
C语言程序设计学生信息的读取与保存_第2页
C语言程序设计学生信息的读取与保存_第3页
C语言程序设计学生信息的读取与保存_第4页
C语言程序设计学生信息的读取与保存_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计 语言程序设计 项目十十 学生信息的读取与保存学生信息的读取与保存- -文文 件件 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 【项目要求】【项目要求】 从文件从文件a.txta.txt读取某班的期末考试成绩,按总分读取某班的期末考试成绩,按总分 排序后写入另外一个文件排序后写入另外一个文件 b.txtb.txt。 【项目分析】【项目分析】 在上一章实现的项目中发现,每次运行程序都要输在上一章实现的项目中发现,每次运行程序都要输 入大量的数据,如果用我们以前学过的输入的方法入大量的数据,如果用我们以前学过的输入的方法 就很不方便

2、,最常用的方法就是预先将这些数据写就很不方便,最常用的方法就是预先将这些数据写 到一个文件里,再将这个文件存放在磁盘上,需要到一个文件里,再将这个文件存放在磁盘上,需要 时再将数据从该文件中读取。时再将数据从该文件中读取。 为实现本项目需要经过打开文件、从文件进行数据为实现本项目需要经过打开文件、从文件进行数据 的读的读/ /写、关闭文件指针三步。写、关闭文件指针三步。 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 问题情境及实现问题情境及实现 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #i

3、nclude #include #define N 100#define N 100 typedef struct studenttypedef struct student char num11;char num11; char name9;char name9; int score3;int score3; float avr;float avr; STU;STU; void fsort(STU s,int n) /void fsort(STU s,int n) / 对结构体数组中的对结构体数组中的 n n个数据进行简单选择排序个数据进行简单选择排序 int i,j,k;int i,j,k

4、; STU t;STU t; for(i=0;in-1;i+)for(i=0;in-1;i+) k=i;k=i; for(j=i+1;jn;j+)for(j=i+1;jn;j+) if(sk.avrsj.avr) k=j;if(sk.avrsj.avr) k=j; if(i!=k)if(i!=k) t=si;si=sk;sk=t;t=si;si=sk;sk=t; 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 问题情境及实现问题情境及实现 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void

5、 main()void main() FILE FILE * *fp1,fp1,* *fp2;fp2; STU sN;STU sN; int i,n,j,sum;int i,n,j,sum; if(fp1=fopen(f:cresource10w2.txt,r)=NULL)if(fp1=fopen(f:cresource10w2.txt,r)=NULL) printf(printf( 找不到该文件找不到该文件 n);/n);/* * 如果打不开文件则给出相应的提示如果打不开文件则给出相应的提示 * */ / getch();getch(); exit(0);exit(0); i=0;i=0;

6、while(!feof(fp1)/while(!feof(fp1)/* * 从文件中读取有关数据,一直读到文件末尾从文件中读取有关数据,一直读到文件末尾* */ / fscanf(fp1,%s%s,si.num,);fscanf(fp1,%s%s,si.num,); sum=0;sum=0; for(j=0;j3;j+)for(j=0;j3;j+) fscanf(fp1,%d,fscanf(fp1,%d, sum+=si.scorej;sum+=si.scorej; si.avr=sum/3.0;/si.avr=sum/3.0;/* * 同时求出平均分同时求出平均分

7、 * */ / i+;i+; 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 问题情境及实现问题情境及实现 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fclose(fp1); /fclose(fp1); /* * 关闭文件关闭文件 * */ / n=i;n=i; for(i=0;in;i+)for(i=0;in;i+) printf(nprintf(n 第第%d%d个学生的信息:个学生的信息: %s %s,i+1,si.num,);%s %s,i+1,si.num,); for(j

8、=0;j3;j+)for(j=0;j3;j+) printf( %d,si.scorej);printf( %d,si.scorej); fsort(s,n);fsort(s,n); fp2=fopen(f:cresource10w2_2.txt,w);/fp2=fopen(f:cresource10w2_2.txt,w);/* *打开文件进行保存数据打开文件进行保存数据 * */ / for(i=0;in;i+)for(i=0;in;i+) fprintf(fp2,%s %s,si.num,);fprintf(fp2,%s %s,si.num,); for(j=0

9、;j3;j+)for(j=0;j文件读文件读/写写-关闭文件关闭文件 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 2 2 文件的打开与关闭文件的打开与关闭(1)(1) 2.1 2.1 打开文件打开文件 函数原型:函数原型: FILE *fopen (char *name , char *mode) 要打开的文件名要打开的文件名使用文件方式使用文件方式 返回值:返回值:正常打开,返回指向文件结构体的指针;正常打开,返回指向文件结构体的指针; 打开失败,为打开失败,为NULL 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语

10、言程序设计 语言程序设计 2 2 文件的打开与关闭文件的打开与关闭(2)(2) 2.1 2.1 打开文件打开文件 课堂练习:课堂练习: 打开当前文件夹下的打开当前文件夹下的 namelist.txt文件,打开方文件,打开方 式为追加式为追加 打开打开d盘盘test文件夹下的文件夹下的namelist.txt文件,如果文件,如果 该文件不存在,就创建该文件,然后增加文件内容该文件不存在,就创建该文件,然后增加文件内容 课堂练习编写课堂练习编写 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 2 2 文件的打开与关闭文件的打开与关闭(3)(3) 2.

11、2 2.2 关闭文件关闭文件 函数原型:函数原型: int fclose( FILE *fp ) 返回值:返回值:正常关闭为正常关闭为0; 返回主菜单返回主菜单 文件打开时返回文件打开时返回 的文件类型指针的文件类型指针 出错时出错时,非非0 课堂练习:关闭前面课堂练习中打开的文件课堂练习:关闭前面课堂练习中打开的文件 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(1)(1) 3.1 3.1 文件的顺序读写文件的顺序读写文件字符输入文件字符输入 / /输出函数输出函数 函数原型:函数原型:int fputc ( i

12、nt c, FILE *fp) 功能:把一字节功能:把一字节代码代码c写入写入fp指向的文件中指向的文件中 返值:正常,返回返值:正常,返回 c; ;出错,为出错,为EOF 函数原型:函数原型:int fgetc ( FILE *fp ) 功能:从功能:从fp指向的文件中指向的文件中读取一字节代码读取一字节代码 返值:正常,返回读到的代码值;返值:正常,返回读到的代码值; 读到文件尾读到文件尾( (EOFEOF) )或出错或出错( (NULLNULL) )为止为止 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(1)

13、(1) 3.1 3.1 文件的顺序读写文件的顺序读写文件字符输入文件字符输入 / /输出函数输出函数 例例1:从键盘输入若干字符,逐个将它们写入文从键盘输入若干字符,逐个将它们写入文 件件”file.txt”中,直到输入一个中,直到输入一个”*”为止。为止。 例例1 编写编写 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(2)(2) 3.1 3.1 文件的顺序读写文件的顺序读写文件字符串输入文件字符串输入 / /输出函数输出函数 函数原型:函数原型:int fputs(char *string, FILE *fp)

14、; 功能:把字符串功能:把字符串写入写入fp指向的文件中指向的文件中 返值:正常,返回返值:正常,返回 0; ; 出错,为出错,为EOF 函数原型:函数原型:char *fgets(char *s, int n, FILE *fp); 功能:从功能:从fp指向的文件中指向的文件中读取长度不超过读取长度不超过n-1n-1个字符个字符 返值:正常,返回读到字符串的首地址;返值:正常,返回读到字符串的首地址; 读到文件尾读到文件尾(EOF)或出错或出错(NULL)为止为止 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(3

15、)(3) 3.1 3.1 文件的顺序读写文件的顺序读写文件的格式化输入文件的格式化输入 / /输出函数输出函数 int fprintf(FILE *fp,const char *format,argument,) int fscanf(FILE *fp,const char *format,address,) 功能:按格式对文件进行功能:按格式对文件进行 I/OI/O操作操作 返值:成功返值:成功, ,返回返回I/OI/O的个数的个数; ;出错或文件尾出错或文件尾, ,返回返回EOFEOF 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3

16、文件的读写文件的读写(4)(4) 3.1 3.1 文件的顺序读写文件的顺序读写文件的格式化输入文件的格式化输入 / /输出函数输出函数 例例3:有如下的学生结构定义,从键盘输入有如下的学生结构定义,从键盘输入 4个学生个学生 的信息,保存到文件的信息,保存到文件 name-list.txt文件中文件中 struct student_type char name10; int num; int age; char addr15; 例例3 编写编写 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(5)(5) 3.1 3.

17、1 文件的顺序读写文件的顺序读写文件的数据块输入文件的数据块输入 / /输出函数输出函数 每个要读每个要读/ /写的写的 要读要读/ /写的文写的文 数据块的大小数据块的大小 件指针件指针 实现文件操作一次读取一组数据实现文件操作一次读取一组数据 (字节数)(字节数) size_t fread(void *buffer,size_t size, size_t count,FILE *fp) size_t fwrite(void *buffer,size_t size, size_t count,FILE *fp) 指向要输入指向要输入/ /输输 出数据块的首地出数据块的首地 址的指针址的指针

18、要读要读/ /写的数写的数 据块的个数据块的个数 返值:返值:成功,返回读成功,返回读/写的块数;出错或文件尾,返回写的块数;出错或文件尾,返回 0 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(6)(6) 2 2 文件的随机读写操作文件的随机读写操作 rewindrewind函数函数 将文件的指针指向用户指定的位置,进行将文件的指针指向用户指定的位置,进行 文件操作文件操作 rewindrewind函数函数 函数原型:函数原型:void rewind(FILE *fp) 功能:重置文件位置指针到文件开头功能:重置

19、文件位置指针到文件开头 返值:无返值:无 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 #include 3 3 文件的读写文件的读写(7)(7) main() 2 2 文件的随机读写操作文件的随机读写操作 rewindrewind函数函数 FILE *fp1,*fp2; fp1=fopen(file1.c,r); 例例4: 分析下面程序的功能分析下面程序的功能 fp2=fopen(file2.c,w); while(!feof(fp1) putchar(fgetc(fp1); rewind(fp1); while(!feof(fp1) fpu

20、tc(fgetc(fp1),fp2); fclose(fp1); 从文件中第一次将它内容显从文件中第一次将它内容显 fclose(fp2); 示在屏幕中,第二次读取将示在屏幕中,第二次读取将 其复制到另一个文件中其复制到另一个文件中 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 C语言程序设计 语言程序设计 3 3 文件的读写文件的读写(7)(7) 2 2 文件的随机读写操作文件的随机读写操作 fseekfseek函数函数 fseekfseek函数函数 函数原型:函数原型: int fseek(FILE *fp, long offset, int whence) 功能:改变文件位置指针的位置功能:改变文件位置指针的位置 返值:成功,返回返值:成功,返回 0 0;失败,返回非;失败,返回非0 0值值 项目十项目十 学生信息的读取与保存学生信息的读取与保存-文件文件 #include stdio.h struct student_type 3 3 文件的读写文件的读写(8)(8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论