《C语言程序设计》课程-源代码软件技术专业国家教学资源库第1页共24页单元5构造类型程序设计——文件源代码SC010201054011.源代码编号SC010201054012.源代码来源单元5构造类型程序设计例5-213.问题描述把从键盘输入的字符输出到文件。4.程序代码#includestdio.h#includestdlib.hvoidWriteChar(FILE*fp);intmain(){FILE*fp;if((fp=fopen(file1.txt,w))==NULL){printf(不能打开file1.txt文件。\n);exit(0);}printf(请输入字符串:);WriteChar(fp);fclose(fp);return0;}voidWriteChar(FILE*fp){《C语言程序设计》课程-源代码软件技术专业国家教学资源库第2页共24页charch;while((ch=getchar())!='\n')fputc(ch,fp);}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第3页共24页SC010201054021.源代码编号SC010201054022.源代码来源单元5构造类型程序设计例5-223.问题描述把从文本文件读入的字符输出到显示器。4.程序代码#includestdio.h#includestdlib.hvoidReadChar(FILE*fp);intmain(){FILE*fp;if((fp=fopen(file1.txt,r))==NULL){printf(不能打开file1.txt文件。\n);exit(0);}printf(从文件中读取的字符为:);ReadChar(fp);fclose(fp);return0;}voidReadChar(FILE*fp){charch;while((ch=fgetc(fp))!=EOF)putchar(ch);printf(\n);《C语言程序设计》课程-源代码软件技术专业国家教学资源库第4页共24页}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第5页共24页SC010201054031.源代码编号SC010201054032.源代码来源单元5构造类型程序设计例5-233.问题描述编写一个程序,能将一个文本文件中的内容复制到另一个文件中。4.程序代码#includestdio.h#includestdlib.hvoidCopyChar(FILE*in,FILE*out);intmain(){FILE*in,*out;charinfile[10],outfile[10];printf(请输入源文件名:\n);scanf(%s,infile);printf(请输入目标文件名:\n);scanf(%s,outfile);if((in=fopen(infile,r))==NULL){printf(不能打开源文件。\n);exit(0);}if((out=fopen(outfile,w))==NULL){printf(不能打开目标文件。\n);exit(0);}CopyChar(in,out);《C语言程序设计》课程-源代码软件技术专业国家教学资源库第6页共24页fclose(in);fclose(out);return0;}voidCopyChar(FILE*in,FILE*out){charch;while((ch=fgetc(in))!=EOF)/*读一个字符,并判断文件结束标志*/fputc(ch,out);/*写一个字符*/}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第7页共24页SC010201054041.源代码编号SC010201054042.源代码来源单元5构造类型程序设计例5-243.问题描述编制一个将文本文件中全部信息送往显示屏上显示的程序。4.程序代码#includestdio.h#includestdlib.hvoidReadStr(FILE*fp);intmain(){FILE*fp;charstring[20];printf(请输入待打开的文件:\n);scanf(%s,string);if((fp=fopen(string,r))==NULL){printf(不能打开该文件。\n);exit(0);}printf(文件内容为:\n);ReadStr(fp);fclose(fp);return0;}voidReadStr(FILE*fp){charstr[81];《C语言程序设计》课程-源代码软件技术专业国家教学资源库第8页共24页while(fgets(str,81,fp)!=NULL)printf(%s,str);printf(\n);}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第9页共24页SC010201054051.源代码编号SC010201054052.源代码来源单元5构造类型程序设计例5-253.问题描述编写一个程序,将一个二进制文件中的内容复制到另一个文件中。4.程序代码#includestdio.h#includestdlib.hvoidCopyBinFile(FILE*in,FILE*out);intmain(){FILE*in,*out;charinfile[10],outfile[10];printf(请输入源文件名:\n);scanf(%s,infile);printf(请输入目标文件名:\n);scanf(%s,outfile);if((in=fopen(infile,rb))==NULL){printf(不能打开源文件。\n);exit(0);}if((out=fopen(outfile,wb))==NULL){printf(不能打开目标文件。\n);exit(0);}CopyBinFile(in,out);《C语言程序设计》课程-源代码软件技术专业国家教学资源库第10页共24页fclose(in);fclose(out);return0;}voidCopyBinFile(FILE*in,FILE*out){charbuff[32768];unsignedintbfsz=32768;unsignedlongi=0;while(bfsz){if(fread(buff,bfsz,1,in)){fwrite(buff,bfsz,1,out);i=i+bfsz;}else{fseek(in,i,0);bfsz=bfsz/2;}}}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第11页共24页SC010201054061.源代码编号SC010201054062.源代码来源单元5构造类型程序设计引例3.问题描述模拟22选5彩票摇奖过程,得出开奖号码,查询投注者自选的一组号码是否中奖,中几等奖。4.程序代码#includestdio.h#includetime.h#includewindows.h#defineSelectListSize22//备选号码表容量为22#defineLotteryListSize5//自选号码表和开奖号码表容量为5typedefstruct{//备选号码表、自选号码表和开奖号码表的描述intdata[SelectListSize];//数组data用于存放表结点intlength;/length为当前表的长度}List;intrandnum(List*SL,int*k){//随机选择一个彩票号码inti,j=rand()%11+10,x;//j表示摇号次数,介于10至20之间for(i=1;i=j;i++){*k=rand()%SL-length+1;//随机生成备选号码位置x=SL-data[*k-1];if(ij)printf(%02d\b\b,x);elseprintf(%02d\t,x);《C语言程序设计》课程-源代码软件技术专业国家教学资源库第12页共24页Sleep(150);//延时}returnx;}voidComputerSelect(List*SL,List*CL){//机器生成开奖号码inti,j,k,x;//k用于存放摇奖号码在备选号码表中的位置srand((unsigned)time(NULL));printf(\n现在开始摇奖:\t);for(i=0;iLotteryListSize;i++){x=randnum(SL,&k);for(j=k;j=SL-length-1;j++)SL-data[j-1]=SL-data[j];SL-length--;CL-data[CL-length]=x;//插入xCL-length++;//表长加1}}voidSelfSelect(List*LL){//自选号码生成彩票inti,j,x;for(i=0;iLotteryListSize;i++){scanf(%d,&x);for(j=0;jLL-length;j++)if(x==LL-data[j])break;if(x1||xSelectListSize||jLL-length){//输入数据小于1或大于22或与前面重复时,出错重输printf(\n输入错,请全部重新输入:);i=-1;LL-length=0;flushall();//清除缓冲区}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第13页共24页else{LL-data[LL-length]=x;//插入xLL-length++;//表长加1}}}voidWinSearch(List*LL,List*CL){//中奖查询inti,j=1,k=0;printf(\n\n您购买的彩票:\t);for(i=0;iLotteryListSize;i++)printf(%02d\t,LL-data[i]);for(i=0;iLotteryListSize;i++){j=1;while(j=LotteryListSize&&CL-data[j-1]!=LL-data[i])j++;if(j=LotteryListSize&&CL-data[j-1]==LL-data[i])k++;}if(k==5)printf(\n\n恭喜,您中了一等奖!\n\n);if(k==4)printf(\n\n恭喜,您中了二等奖!\n\n);if(k==3)printf(\n\n恭喜,您中了三等奖!\n\n);if(k3)printf(\n\n您只选中了%d个号码,没有中奖!\n\n,k);}intmain(){//LL为自选号码表,CL开奖号码表,SL为备选号码表ListLL={{0},0},CL={{0},0},SL={{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,8,19,20,21,22},22};printf(\n\t\t欢迎使用22选5体育彩票系统\n);《C语言程序设计》课程-源代码软件技术专业国家教学资源库第14页共24页printf(\n请输入自选彩票号码(例如:1127321):);SelfSelect(&LL);//自选号码生成彩票ComputerSelect(&SL,&CL);//机器生成开奖号码WinSearch(&LL,&CL);//中奖查询return0;}《C语言程序设计》课程-源代码软件技术专业国家教学资源库第15页共24页SC010201054071.源代码编号SC010201054072.源代码来源单元5构造类型程序设计课堂实践5-133.问题描述把从键盘输入的字符“abcde12345”输出到文件d:\f1.txt,并从该文件中读出字符输出到显示器。4.程序代码#includestdio.h#includestdlib.hintmain(){voidWriteChar(FILE*fp);voidReadChar(FILE*fp);FILE*fp;if((fp=fopen(d:\\f1.t