实验12文件程序设计实验目的1)掌握文件的基本概念2)掌握文本文件的打开和关闭操作3)掌握文本文件的顺序读,写方法实验内容1、基础编程题(2)将实数写入文件:从键盘输入若干实数(以特殊数值-1结束),分别写到一个文本文件中。试编写相应程序。2.1程序源代码#includeintmain(void){intn;FILE*pf=fopen("1.txt","w+");if(!pf){puts("openfileerror!");return-1;}while(true){printf("inputanum:");scanf("%d",&n);if(n==-1)break;fprintf(pf,"%d",n);}fclose(pf);puts("ok!");return0;}2.2运行结果(3)统计成绩:从键盘输入以下10个学生的学号,姓名,以及数学,语文和英语成绩,写到文本文件f3.txt中,再从文件中取出数据,计算每个学生的总成绩和平均分,并将结果显示在屏幕上。试编写相应程序。3.1程序源代码#include#include#includevoidtest2();intmain(){test2();}structstudent{longno;charname[20];intmath;intchinese;intenglish;intsum;doubleave;};voidtest2(){structstudentstudent_1;FILE*fp=NULL;charbuff[1000]="学号\t姓名\t数学\t语文\t英语\t总成绩\t平均分";inti;fp=fopen("f3.txt","w+");fputs(buff,fp);fputs("\n",fp);for(i=0;i<10;i++){scanf("%ld%s%d%d%d",&student_1.no,student_1.name,&student_1.math,&student_1.chinese,&student_1.english);student_1.sum=student_1.math+student_1.chinese+student_1.english;student_1.ave=student_1.sum/3;fprintf(fp,"%ld\t%s\t%d\t%d\t%d\t%d\t%1.0lf\n",student_1.no,student_1.name,student_1.math,student_1.chinese,student_1.english,student_1.sum,student_1.ave);}printf("%s\n",buff);fseek(fp,sizeof(buff),SEEK_SET);for(i=0;i<10;i++){fscanf(fp,"%ld\t%s\t%d\t%d\t%d\t%d\t%1.0lf\n",&student_1.no,student_1.name,&student_1.math,&student_1.chinese,&student_1.english,&student_1.sum,&student_1.ave);printf("%ld\t%s\t%d\t%d\t%d\t%d\t%1.0lf\n",student_1.no,student_1.name,student_1.math,student_1.chinese,student_1.english,student_1.sum,student_1.ave);}fclose(fp);}3.2运行结果2、改错题将文件中的数据求和并写入文本文件尾:文件Int_Data.dat中存放了若干整数,将文件中所有数据相加,并把累加和写入该文件的最后。2.1程序源代码#include#includeintmain(void){FILEfp;intn,sum;if((fp=fopen("Int_Data.dat","r"))==NULL){printf("Can'tOpenFile!");exit(0);}while(fscanf(fp,"%d",&n)==EOF)sum=sum+n;fprintf(fp,"%d",sum);fclose(fp);return0;}2.2运行结果2.3实验过程将源代码改为:#include#includeintmain(){FILE*fp;intn,sum=0;if((fp=fopen("int_data.dat","a+"))==NULL){printf("Can'tOpenFile!");exit(0);}while(fscanf(fp,"%d",&n)!=EOF)sum=sum+n;fprintf(fp,"%d",sum);fclose(fp);return0;}运行结果为:3、拓展编程(2)删除文件中的注释:将C语言源程序(hello.c)文件中的所有注释去掉后存入另一个文件(new_hello.c).试编写相应程序。2.1程序源代码#include#include#includevoidtest4();intmain(){test4();}voidtest4(){FILE*fp=NULL;FILE*fpcp=NULL;charch;if((fp=fopen("hello.c","r"))==NULL){printf("文件不存在");exit(0);};fpcp=fopen("new_hello.c","w");while(!feof(fp)){ch=fgetc(fp);if(ch=='/'){if(fgetc(fp)=='*'){while(fgetc(fp)!='/'){continue;}}}elseif(ch!=EOF){fputc(ch,fpcp);}}fclose(fp);fclose(fpcp);}2.2运行结果(3)账户余额管理:创建一个随机文件,用来存储银行账户和余额信息,程序要求能够查询某个账户的余额,当客户发生交易额时(正表示存入,负表示取出),并能更新余额。账户信息包括:账号,账号名和余额3个数据项。试编写相应程序3.1程序源代码#include#include#includelongsize;structaccount{charno[10];characctname[50];doublebalance;};FILE*openfile(char*openmode);doub...