实验十 文件
一、实验目的
1.掌握文件与文件指针的概念。
2.学会使用文件打开、文件关闭、读与写文件等基本的文件操作函数。 3.运用文件操作函数进行程序设计。 二、实验内容
1.以文本方式建立初始数据文件,请输入10个学生的学号、姓名及考试成绩,形式如下:
1001 LiLi 80 1002 HuWei 90 1003 LiMing 75
┇
读入file1.dat中的数据,找出最高分和最低度分的学生。
# include \typedef struct student { int num;
char name[20]; int score; }STU;
void main() {
int i;
STU st,stmax,stmin; FILE *fp;
stmax.score=0; stmin.score=100; fp=fopen(\ if(!fp) return; for(i=0;i<10;i++)
{ fscanf(fp,\ if(st.score>stmax.score) stmax=st; if(st.score fclose(fp); printf(\printf(\getchar(); } 请按以下步骤实习和思考: ①分析程序,上机运行程序并分析运行结果。 ②对比实验六中的相应例子,找出差别。 ③如果事先不知道学生个数,则程序应该如何修改?请将以上程序中的循环语句for(i=0;i<10;i++)改为(while(!feof(fp))再运行程序,看结果是否正确? 2.读入file2.dat中的数据,然后按成绩从高到低度的顺序进行排序,并将排序结果分别以文本方式存入到文件file3.dat中,以二进制形式存入文件file4.dat中。 # include \typedef struct student { int num; char name[20]; int score; }STU; void sort(STU *st,int n) { STU *i,*j,t; for(i=st;i if(i->score void main() { int i,n=10; STU st[10]; FILE *fp,*fp1,*fp2; fp=fopen(\ if(!fp) return; for(i=0;i<10;i++) fscanf(fp,\ fclose(fp); sort(st,n); fp1=fopen(\ for(i=0;i fprintf(fp1,\ fclose(fp1); fp2=fopen(\ fwrite(st,sizeof(STU),n,fp2); fclose(fp2); getchar(); } 请分析程序,上机运行程序,运行结果在哪里?与上一例相比,此例中对读取文件的格式有何不同? 3.某班的学生145人,每人的信息包括:学号、姓名、性别、和成绩。编制一个C程序,完成以下操作: ①定义一个结构体类型数组。 ②打开可读写的新文件student.dat。 ③使用函数fwrite()将结构体数组内容写入文件student.dat中。 ④关闭文件student.dat。 ⑤打开可读写文件student.dat。 ⑥从文件中依次读出各学生情况并按学生成绩进行排序,输出排好序后的数据。 ⑦关闭文件student.dat。