1、studentsi.num,studentsi.stname,&studentsi.score); if(max min=studentsi.score; k=i; Max score: %d,num:%d,name:%sn,studentsj.score,studentsj.num,&studentsj.stname);Min score:,studentsk.score,studentsk.num,&studentsk.stname); if(fclose(fp)Can not close the file! return 0;【练习12-2】请使用例8-9答电码加密函数对民吗字符串进行加
2、密,改写例12-2。string.hstruct sysuser char username20; char password8;void encrypt(char *pwd); int i; struct sysuser su;f12-2.txtw)=NULL)=5;i+)Enter %dth sysuser (name password):,i); scanf(%s%s,su.username,su.password); encrypt(su.password); fprintf(fp,%s %snvoid encrypt(char *pwd) for(i=0;strlen(pwd);i+
3、) if(pwdi=z) pwdi=a; else pwdi+=1;【练习12-3】例12-3中为什么在执行fputc(ch,fp2)前要判断ch的值是否等于EOF?改写例12-3的程序,在复制用户信息文件后,再统计被复制文件中字符的数量。文件结束符EOF是一个值为-1的常量,读文件时可用来判断从文件中读入的字符是否为EOF来决定循环是否继续。 FILE *fp1,*fp2; char ch; int count=0; if(fp1=fopen()=NULL) if(fp2=fopen(f12-3.txt)=NULL) while(!feof(fp1) ch=fgetc(fp1); if(ch
4、!=EOF) fputc(ch,fp2); count+; if(fclose(fp1) if(fclose(fp2)f12-2中字符数量为:%d,count); 【练习12-4】字母转换并统计行数: 读取一个指定的文本文件,显示在屏幕上,如果有大写字母,则改成小写字母再输出,并根据回车符统计行数。试编写相应程序。 int countline=0;练习12-4.txt printf(Not open! exit(0);feof(fp) ch=fgetc(fp); if(ch!=EOF) if(ch=A&ch0) fseek(cfptr,size*(logcount-1),SEEK_SET);T
5、he last log is:logid:%-6ldnlogdate:%-11snlognote:%-15sn,log.logid,log.logdate,log.lognote);charge:%-10.2lfnbalance:-10.2lfn,log.charge,1og.balance); else printf(no logs in file!/*添加新记录*/void AddNewLog(FILE *cfptr) struct LogData log,lastlog;Input logdate (format: 2006-01-01):%s,log.logdate);Input lo
6、gnote:,log.lognote);Input Charge: Income+and epend-:log.charge); logcount=getLogcount(cfptr); if(logcount0) fread(&lastlog,size,1,cfptr) log.logid=lastlog.1ogid+1; log.balance=log.charge+lastlog.balance; else log.logid=1; log.balance=log.charge; rewind(cfptr);ogid=last-taraetlastlog;logid=%ldn,log.l
7、ogid); fwirte(&log,sizeof(struct LogData),1,cfptr);/*修改资金账户*/void UpdateLog(FILE *cfptr) FILE *fpout; struct LogData user; char date11; char note15; int choice,ID; cfptr=fileopen( if(fpout=fopen(cash.datcan not open the file !Enter LogID:ID);user,sizeof(struct LogData),1,cfptr); if(strcmp(user.logid
8、,ID)=0)请输入修改信息:Date:,date); strcpy(user.logdate,date);Note:,note); strcpy(user.lognote,note);Charge: user.charge=charge;Balance:balance); user.balance=balance; fwrite(&user,sizeof(struct LogData),1,fpout); fwrite(& if(fclose(cfptr) if(fclose(fpout) unlink(cashbox.dat/remove(都是删除文件的函数 rename(/*打开文件*/
9、FILE *openfile(char *openmode),openmode)=NULL)can not open file cashbox.dat! return (fp); int choice; size=sizeof(struct LogData); while(choice=inputchoice()!=0) switch(choice) case 1: fp=openfile(ab+ AddNewLog(fp); break; /*列出所有的收入支出情况*/ case 2:rb ListAllLog(fp); /*查询最后记录及余额*/ case 3: QueryLastLog(
10、fp); case 4: UpdateLog(fp); default:Input Error.习题121、选择题1 .以下语句将输出_B_。printf (%d %d %d,NULL,0,EOF);A.0 0 1 B.0 0 -1 C.NULL EOF D.1 0 EOF2.如果二进制文件a.dat 已经存在,现在要写入全新数据,应以_B_方式打开。A. B.wb C. D.“wb+3.定义”FILE *fp;,则文件指针fp 指向的是_D_。A.文件在磁盘上的读写位置 B文件在级冲区上的读写位置C.整个磁盘文件 D.文件类型结构4.缓冲文件系统的文件缓冲区位于_C_。A.磁盘缓冲区中 B.
11、磁盘文件中C.内存数据区中 D.程序文件中5.使文件指针重新定位到文件读写的首地址的函数是_C_。A.ftell ( ) B.fseek ( ) C.rewind ( ) D.ferror( )二、填空题1.函数fopen ( )的返回值是_指向文件缓冲区的首地址的文件结构类型指针_。2.文件的三大特征是_名称_、_大小_和_类型_。3.缓冲文件系统与非缓冲文件系统的不同点在于_系统是否为文件自动分配一块文件缓冲区(内存单元)_。4.只能向指定文件写入一个字符的函数是_fputc()函数_。5.判断文件指针是否已经到了文件尾部的函数是_feof()函数_。6.阅读程序,以下程序完成的功能是_文件infile内容复制到文件_。#include letter+; else if(ch09 digiter+; other+;letter=%d,digiter=%d,other=%d,letter,digiter,other);2.将实数写入文件: 从键盘输人若干实数(以特殊数值-1结束),分别写到一个文本文件中。 int number;Input number:n
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2