ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:99.34KB ,
资源ID:4268379      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4268379.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C程序设计实验文件实验报告.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C程序设计实验文件实验报告.docx

1、C程序设计实验文件实验报告贵州大学C程序设计实验 实验报告实验名称:文件专 业电子信息科学与技术班 级 姓 名学 号教 师贵州大学理学院2010年 一、实验目的:(1)、掌握文件以及缓冲文件系统、文件指针的概念;(2)、学会使用文件打开、关闭、读、写等文件操作函数;(3)、学会用缓冲文件系统对文件进行简单的操作。二、实验环境:Windows 7、Microsoft Visual Studio 2010 三、实验内容:编写程序并上机调试运行。(1)有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件st

2、ud中。 设5名学生的学号、姓名和3门课成绩如下: 99101 Wang 89, 98, 67.5 99103 Li 60, 80, 90 99106 Fun 75.5,91.5,99 99110 Ling 100, 50, 62.5 99113 Yuan 58, 68, 71在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。程序如下:#include#define SIZE 5struct student char name10; long int num; float score3; float ave;studSIZE;void main() void save(voi

3、d); int i; float sumSIZE; FILE *fp1; printf(Please input five students names, numbers and three scores like this:nname num score1 score2 score3nn); for(i=0;iSIZE;i+) scanf(%s%ld%f%f%f,studi.name,&studi.num,&studi.score0,&studi.score1,&studi.score2); sumi=studi.score0+studi.score1+studi.score2; studi

4、.ave=sumi/3; save();fp1=fopen(stud.dat,rb);printf(n name No. score1 score2 score3 aven);printf(-n);for(i=0;iSIZE;i+) fread(&studi,sizeof(struct student),1,fp1); printf(%-10s %5ld %8.1f %9.1f %9.1f %8.2fn,studi.name,studi.num,studi.score0,studi.score1,studi.score2,studi.ave); fclose(fp1);getch();void

5、 save(void) FILE *fp; int i; if(fp=fopen(stud.dat,wb)=NULL) printf(The file can not open!n); return; for(i=0;iSIZE;i+) if(fwrite(&studi,sizeof(struct student),1,fp)!=1) printf(file write error!n); return; fclose(fp); 运行结果如下所示: (2)将上题stud文件中的学生数据按平均分进行排序处理,将已排序的学生数据存在一个新文件stu_sort中。在向文件stud_sort写入数据后

6、,应检查验证stu_sort文件中的内容是否正确。程序如下:#include#include#define SIZE 5struct student char name10; long int num; float score3; float ave;studSIZE,work;void main() void sort(void); int i; FILE *fp1,*fp2;fp2=fopen(stu_sort.dat,rb);printf(nunsorted students scores list is as followsn);printf(-n);printf( name No.

7、score1 score2 score3 aven);printf(-n);for(i=0;iSIZE;i+) fread(&studi,sizeof(struct student),1,fp2); printf(%-10s %5ld %8.1f %9.1f %9.1f %8.2fn,studi.name,studi.num,studi.score0,studi.score1,studi.score2,studi.ave); fclose(fp2);getch();void sort(void) FILE *fp1,*fp2; int i,j; if(fp1=fopen(stud.dat,rb

8、)=NULL) printf(The file can not open!nn); exit(0); if(fp2=fopen(stu_sort.dat,wb)=NULL) printf(The file write error!n); exit(0); for(i=0;iSIZE;i+) if(fread(&studi,sizeof(struct student),1,fp1)!=1) printf(file read error!n); exit(0); for(i=0;iSIZE;i+) for(j=i+i;jSIZE;j+) if(studi.avestudj.ave) work=st

9、udi; studi=studj; studj=work; fwrite(&studi,sizeof(struct student),1,fp2); fclose(fp1); fclose(fp2); 运行结果如下所示: (3)将上题中已排序的学生成绩文件进行插入处理。插入一个学生的3门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个文件。 要插入的学生数据为: 99108 Xin 90,95,60 在向新文件stu_new写入数据后,应检查验证sru_new文件中的内容是否正确。程序如下:#include#includestruct student char

10、 name10; long int num; float score3; float ave;stud10,s;void main()printf(nPlease input your want to add data:n); scanf(%s%ld%f%f%f,s.name,&s.num,&s.score0,&s.score1,&s.score2); s.ave=(s.score0+s.score1+s.score2)/3;n=i; printf(nafter add sorted students scores list is as followsn); printf(-n); print

11、f( name No. score1 score2 score3 aven); printf(-n); fp2=fopen(stu_new,rb); for(t=0;studt.aves.ave&tn;t+); for(i=0;it;i+) fwrite(&studi,sizeof(struct student),1,fp2); printf(%-10s %5ld %8.1f %9.1f %9.1f %8.2fn,studi.name,studi.num,studi.score0,studi.score1,studi.score2,studi.ave); fwrite(&s,sizeof(st

12、ruct student),1,fp2); printf(%-10s %5ld %8.1f %9.1f %9.1f %8.2fn,s.name,s.num,s.score0,s.score1,s.score2,s.ave); for(i=t;in;i+) fwrite(&studi,sizeof(struct student),1,fp2); printf(%-10s %5ld %8.1f %9.1f %9.1f %8.2fn,studi.name,studi.num,studi.score0,studi.score1,studi.score2,studi.ave); printf(n);fc

13、lose(fp1);fclose(fp2);getch();运行结果如下所示:四、实验总结。文件是程序设计中十分重要的概念。所谓“文件”,是指存储在外部存储介质上的一组具有名字的数据的集合。一批数据是以文件的形式存放在外部存储介质(如磁盘)上的,操作系统以文件为单位对数据进行管理,即如果要找到外部存储介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据;如果要向外部存储介质上存储数据也必须先建立一个文件,然后才能向它输入数据。 C 语言把文件看成是一个字符(字节)的序列,即文件由一个个字符(字节)的数据顺序组成,根据数据的组织形式,可分为 ASCII 文件和二进制文件。 AS

14、CII 文件又称文本(text)文件,它的每个字节存放一个 ASCII 代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。这类文件可以节省外存空间。如有一个文件元素为整数 127,则二进制代码表示为 01010101,只需占用一个字节,而用 ASCII 码形式存放 127,由于 ASCII 码与字符一一对应,一个字节代表一个字符,因此需三个字节存放 127 所对应的三个内部码 49(1 的 ASCII 码)、50(2 的ASCII 码)、55(7 的 ASCII 码),显然,ASCII 文件便于对字符进行输出或逐个处理,节省二进制与 ASCII 之间的转

15、换时间,但它要占用较多的存储空间。 在 C 语言中一个 C 文件可看成是一连串的字符(字节)流,对文件的存取是以字符(字节)为单位的,输入输出的数据流的开始和结束仅受程序控制而不受物理符号(回车换行符)控制,一般把这种文件称为流式文件。C 语言允许对文件存取一个字符,这就增加了处理的灵活性。 C 语言没有提供对文件进行操作的语句,所有的文件操作都是利用 C 编译系统所提供的库函数来实现。多数 C 编译系统都提供两种文件处理方式,即“缓冲文件系统”和“非缓冲文件系统”。 缓冲文件系统,是指系统自动地在内存区为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据,必须先送到内存缓冲区,装满缓

16、冲区后再送到磁盘。如果从磁盘向内存读入数据,则一次从磁盘文件中将一批数据输入到内存缓冲区,然后再从缓冲区逐个地将数据送到程序数据区,如图 12.1 所示。缓冲区的大小由各个具体的 C 语言版本确定,一般为 512 个字节。 非缓冲文件系统,是指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。 用缓冲文件系统进行的输入输出又称为高级(或高层)磁盘输入输出,用非缓冲文件系统进行的输入输出又称为低级(或低层)输入输出,非缓冲文件系统所提供的函数依赖所使用的操作系统,通用性较差。本章重点介绍缓冲文件系统的文件操作函数。 无论是使用缓冲文件系统还是非缓冲文件系统,在对文件进行操作时,一般包括以下几个步骤: 打开文件; 文件处理,包括文件读写操作等; 关闭文件。 每个文件在读写之前都必须先打开,只有在打开文件之后,才能进行文件的读写操作,当一个文件操作完之后,都必须关闭该文件。 每一个文件被打开或创建之后,都有一个唯一确定该文件的文件标识,以后对该文件的处理都是通过该文件标识进行的。 2010年 月 日

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2