实验十 文件

更新时间:2024-01-31 13:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验十 文件

一、实验目的

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->scorescore){t=*i;*i=*j;*j=t;} }

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。

本文来源:https://www.bwwdw.com/article/biiw.html

Top