C语言实验报告(16)(9)

2019-08-30 17:36

实验十一 文件程序设计

【实验目的】

1.掌握文件与文件指针的概念。

2.学会使用文件打开、文件关闭、读与写文件等基本的文件操作函数。 3.运用文件操作函数进行程序设计。

【上机实习指导】

1.以文本方式建立初始数据文件,请在TC的编辑窗中输入10个学生的学号、姓名及考试成绩,形式如下:

1001 LiLi 80 1002 HuWei 90 1003 LiMing 75

数据输入完后,请选用File中的菜单中项Write to 将数据存入文件file1.dat 中。记住,你建立的file1.dat是一个不等长记录的文本文件,即每个学生的数据是不等长的,数据间以空格作为分隔。

现在,你再瘵编辑窗口中的数据修改成等长记录,学号、姓名和成绩的长度分别按4、10、3给定,形式如下:

1001LiLi 80 1002HuWei 90 1003LiMing 75 ┇

然后将数据存入文件file2.dat中,该文件就是一个等长记录的文本文件,每个学生的数据占18个字符(包括换行符)。

1. 读入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

41

}

fclose(fp);

printf(\printf(\getchar(); }

请按以下步骤实习和思考:

①分析程序,上机运行程序并分析运行结果。 ②对比实验六中的相应例子,找出差别。

③如果事先不知道学生个数,则程序应该如何修改?请将以上程序中的循环语句for(i=0;i<10;i++)改为(while(!feof(fp))再运行程序,看结果是否正确?

3.读入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(); }

42

请分析程序,上机运行程序,运行结果在哪里?与上一例相比,此例中对读取文件的格式有何不同?

【自编程序上机】

1.某班的学生145人,每人的信息包括:学号、姓名、性别、和成绩。编制一个C程序,完成以下操作:

①定义一个结构体类型数组。

②打开可读写的新文件student.dat。

③使用函数fwrite()将结构体数组内容写入文件student.dat中。 ④关闭文件student.dat。

⑤打开可读写文件student.dat。

⑥从文件中依次读出各学生情况并按学生成绩进行排序,输出排好序后的数据。 ⑦关闭文件student.dat。

2.二进制文件“file1.dat”中存有10个实数,现将它们按从小到大的顺序排序,结果存入文件“file2.dat”中,并在屏幕上显示。

提示:

⑴题目涉及两个文件,就要定义两文件指针;

⑵两个文件的打开方式都是二进制形式,但一个是读取文件内容,一个是将内容写入文件; ⑶使用fread()函数读取“file1.txt”中的数据,使用fwrite()函数将排序后的数据存入“file2.txt”中;

⑷文件使用结束,关闭文件。

3.文件的合并:有两个磁盘文件“combine1.txt”和“combine2.txt”,各存放一行字母,现要求把这两个文件中的信息合并(按ASCII码顺序排列),输出到一个新文件“combine.txt”中去。

提示:

⑴本题将两个文件中内容写入到第三个文件中,需要定义一个数组存放读取出的两个文件中的数据; ⑵使用ASCII方式相继对两个文件进行打开和内容读取操作,使用fgetc()函数读取文件中的内容; ⑶对读取的字符进行排序,使用fputc()函数将结果存入“combine.txt”中; ⑷文件使用结束,关闭文件。

43

【实验报告】

实习时间: 实习地点: 实习机号: 具 体 实 验 内 容 44

程 序 调 试 过 程 实 习 小 结 45


C语言实验报告(16)(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南京斯波特运动填料有限公司创业计划书(完整版) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: