《计算机c语言实验《文件程序设计》.docx》由会员分享,可在线阅读,更多相关《计算机c语言实验《文件程序设计》.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验12文件程序设计实验目的1)掌握文件的基本概念2)掌握文本文件的打开和关闭操作3)掌握文本文件的顺序读,写方法实验内容1、基础编程题将实数写入文件:从键盘输入若干实数(以特殊数值结束), 分别写到一个文本文件中。试编写相应程序。2.1程序源代码#include int main(void)(int n;迁(!pf)(return -1;)while (true)if (n=-l) break; fclose(pf);return 0;实验心得与小结指导教师签名:F*江释工本r3瓦阵我处理会.二。指导教师评议华责费学曹三W心功2nclj._:d(3 Rvoid main (J ( 二、函数*
2、/4piintf Ctiello World iXn*?”:心同七F安慕总 i2.2运行结果统计成绩:从键盘输入以下10个学生的学号,姓名,以及数 学,语文和英语成绩,写到文本文件f3.txt中,再从文件中取出数 据,计算每一个学生的总成绩和平均分,并将结果显示在屏幕上。 试编写相应程序。3.1程序源代码#include#include#includevoid test2();int main()test2();)struct student long no;char name20;int math;int Chinese;int english;int sum;double ave;);vo
3、id test2() struct student student_l;FILE *fp 二 NULL;学号姓名数学语文英语总成绩平均int i;fputs(buff,fp);for(i=0;i10;i+)math,&student_l .Chinese,&student_l .english);student_l .sum=student_l .math+student_l .chinese+student_l .english;student l.ave=student l.sum/3;.name,student_l .math,student_l .Chinese,student_l .
4、english,student_l .su m,student_l.ave);)fseek(fp,sizeof(buff),SEEK_SET);for(i=0;i10;i+)_1 .name,&student_l .math,&student_l .Chinese,&student_l .english,&stu dent_l .sum,&student_l .ave);me,student_l .math,student_l .Chinese,student_l .english,student_l .sum,st udent_l.ave);fclose(fp);)32运行结果3050801
5、 阵时 I Bl 75 82学号珏名数学落文芙沿总成筋平均分3O5OSD1 豚刚 SL M EZ23E 巧Process returned 0(。W 0) executi on tii me : 14.169 s Press any key to continue.f3.txt-记肇为雨缉铮:E)格式(现臣制V)第如7学号姓宅数学语文英语总成绩平均分3050801 陈刚 817582238792、改错题将文件中的数据求和并写入文本文件尾:文件Int_Data.dat中存放 了若干整数,将文件中所有数据相加,并把累加和写入该文件的最 后。2.1 程序源代码#include#includeint
6、main ( void )(FILE fp;int n,sum;exit(O);sum=sum+n;fclose(fp); return 0;)2.2 运行结果IE正情鼻D= wqA本株亚愣健上aa. F-|Err-kr| :VW-ErKT1t皇豪若 Z r:tu-Hi 14 C: AFtWta-IU-FklE-r ViiHp AiHJc-lwIqARJa.b: m: irvl-a w4iirn: .i-riimtt: *rwtx= (wiR_ivlHH)ErrAr I:*.A*391砒一f仃FILI*a-t fd&TM-fPJ.IJE* L* /ILEM, UrL* hhl fLri-G*i
7、niX*rLUnj 盟:in”ar町皇 J w LB:X: u-hhM M Halhhb si,心 f T.TuhLM : :2.3 实验过程将源代码改为:#include #include int main()(FILE *fp; int n,sum = 0;exit(O); sum=sum+n;fclose(fp);return 0;)运行结果为:小15据5。1网2网22。2迎3网11953、拓展编程删除文件中的注释:将C语言源程序(hello.c)文件中的所有 注 释去掉后存入另一个文件(newJieH。c) .试编写相应程序。2.1 程序源代码#include#include#incl
8、udevoid test4();int main()test4();)void test4() FILE *fp = NULL;FILE *fpcp = NULL; char ch;文件不存在 exit(O);while(!feof(fp)ch=fgetc(fp);if(ch=7) if(fgetc(fp)=*)while(fgetc(fp) !=/) continue;else if(ch!=EOF) fputc(ch,fpcp);)fclose(fp); fclose(fpcp);)2.2 运行结果z here x diapl3 x Eain. c x hello 匕 xl#include
9、 void main ()(printf(nHello World!knn);L账户余额管理:创建一个随机文件,用来存储银行账户和余额信 息,程序要求能够查询某个账户的余额,当客户发生交易额时(正表 示存入,负表示取出),并能更新余额。账户信息包括:账号,账号名和余额3个数据项。试编写相应程序3.1程序源代码#include #include#include long size;struct account char no10;char acctname50;double balance;);FILE *openfile(char *openmode);double userbalance(F
10、ILE *fp,char *name);void pay(FILE *fp,char *name,double count);int main()(FILE *fp;int choice;char name50;double balance;double count;请输入选择类型查账户余额账户交易退出按switch(choice)case 1:输入名字balance=userbalance(fp,name); break;case 2:输入名字输入交易金额pay(fp,name,count); break; )default:exit(O);break;FILE *openfile(char
11、 *openmode)FILE *fp;exit(O);)return fp;)double userbalance(FILE *fp,char *name) struct account user;double balance; fseek(fp,OL,SEEK_SET); while(!feof(fp) if(strcmp(user.acctname, name)= 0) balance=user.balance;break;)return balance;)void pay (FILE *fp,char *name,double count) FILE *fpout;struct account user;double balance;balance=userbalance(fp,name);balance=balance+count;fseek(fp,OL,SEEK_SET);while(!feof(fp)if(strcmp(user.acctname, name) = 0) user.balance=balance;else)fclose(fp); fclose(fpout);)32运行结果