您好,欢迎访问三七文档
第四讲文件一、选择题1.当已存在一个abc.txt文件时,执行函数fopen(“abc.txt”,“r++”)的功能是。A)打开abc.txt文件,清除原有的内容B)打开abc.txt文件,只能写入新的内容打开abc.txt文件,只能读取原有内容打开abc.txt文件,可以读取和写入新的内容2.若用fopen()函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是。*A)“ab+”B)“wb+”C)“rb+”D)“ab”3.使用fseek函数可以实现的操作是。改变文件的位置指针的当前位置B)文件的顺序读写文件的随机读写以上都不对4.fread(buf,64,2,fp)的功能是。*从fp文件流中读出整数64,并存放在buf中;B)从fp文件流中读出整数64和2,并存放在buf中;从fp文件流中读出64个字节的字符,并存放在buf中;从fp文件流中读出2个64个字节的字符,并存放在buf中;5.以下程序的功能是。*main(){FILE*fp;charstr[]=”HELLO”;fp=fopen(“PRN”,”w”);fpus(str,fp);fclose(fp);}A)在屏幕上显示“HELLO”B)把“HELLO”存入PRN文件中在打印机上打印出“HELLO”以上都不对6.若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是。A)EOFB)0C)非零值D)NULL7.以下叙述中不正确的是。A)C语言中的文本文件以ASCII码形式存储数据B)C语言中对二进制位的访问速度比文本文件快C)C语言中,随机读写方式不使用于文本文件D)C语言中,顺序读写方式不使用于二进制文件8.以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#includestdio.hmain(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出错的原因是。**A)函数fopen调用形式有误B)输入文件没有关闭C)函数fgetc调用形式有误D)文件指针stdin没有定义9、若fp为文件指针,且文件已正确打开,i为long型变量,以下程序段的输出结果是。*fseek(fp,0,SEEK_END);i=ftell(fp);printf(i=%ld\n,i);A)–1B)fp所指文件的长度,以字节为单位C)0D)2二、填空题1.C语言中根据数据的组织形式,把文件分为和两种。2.使用fopen(“abc”,”r+”)打开文件时,若abc文件不存在,则。*3.使用fopen(“abc”,”w+”)打开文件时,若abc文件已存在,则。*4.C语言中文件的格式化输入输出函数对是;文件的数据块输入输出函数对是;文件的字符串输入输出函数对是。5.C语言中文件指针设置函数是;文件指针位置检测函数是。6.在C程序中,文件可以用方式存取,也可以用方式存取。7.在C程序中,数据可以用和两种代码形式存放。8.在C语言中,文件的存取是以为单位的,这种文件被称作文件。9.feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为,否则为。三、程序填空题1.下面程序用变量count统计文件中字符的个数。请填空。**#includestdio.hmain(){FILE*fp;longcount=0;if((fp=fopen(“letter.dat”,(1)))==NULL){printf(“cannotopenfile\n”);exit(0);}while(!feof(fp)){(2);(3);}printf(“count=%ld\n”,count);fclose(fp);}2.以下程序的功能是将文件file1.c的内容输出到屏幕上并复制到文件file2.c中。#includestdio.hmain(){FILE(1);fp1=fopen(“file1.c”,”r”);fp2=fopen(“file2.c”,”w”);while(!feof(fp1))putchar(getc(fp1));(2)while(!feof(fp1))putc(3);fclose(fp1);fclose(fp2);}3.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部。**#includestdio.hvoidmain(void){FILE*fp;charch,fname[32];intcount=0;printf(Inputthefilename:);scanf(%s,fname);if((fp=fopen((1),w+))==NULL){printf(Can'topenfile:%s\n,fname);exit(0);}printf(Enterdata:\n);while((ch=getchar())!=#){fputc(ch,fp);count++;}fprintf((2),\n%d\n,count);fclose(fp);}四、编程题1.编写一个程序,由键盘输入一个文件名,然后把从键盘输入的字符依次存放到该文件中,用‘#’作为结束输入的标志。**2.编写一个程序,建立一个abc文本文件,向其中写入“thisisatest”字符串,然后显示该文件的内容。**3.编写一程序,查找指定的文本文件中某个单词出现的行号及该行的内容。**4.编写一程序fcat.c,把命令行中指定的多个文本文件连接成一个文件。**例如:fcatfile1file2file3它把文本文件file1、file2和file3连接成一个文件,连接后的文件名为file1。5.编写一个程序,将指定的文本文件中某单词替换成另一个单词。**第四讲答案一、选择题1~5DBADC6~9CDAB二、填空题1.文本文件二进制文件2.出错3.清除abc原有的数据4.fscanf/fprintffread/fwritefgets/fputs1.fseekftell2.顺序随机3.二进制ASCII4.字节流式5.非零值0三、程序填空题1.(1)”r”(2)fgetc(fp)(3)count++2.(1)*fp1,*fp2(2)rewind(fp1);(3)getc(fp1),fp23.(1)fname(2)fp四、编程题1.#includestdio.hmain(){FILE*fp;charch,fname[10];printf(“输入一个文件名:”);gets(fname);if((fp=fopen(fname,”w+”))==NULL){printf(“不能打开%s文件\n”,fname);exit(1);}printf(“输入数据:\n”);while((ch=getchar())!=’#’)fputc(ch,fp);fclose(fp);}2.#includestdio.h#includestring.hmain(){FILE*fp;charmsg[]=”thisisatest”;charbuf[20];if((fp=fopen(“abc”,”w+”))==NULL){printf(“不能建立abc文件\n”);exit(1);}fwrite(msg,strlen(msg)+1,1,fp);fseek(fp,SEEK_SET,0);fread(buf,strlen(msg)+1,1,fp);printf(“%s\n”,buf);fclose(fp);}fclose(fp);}3./*filename:findword.c*/#includestdio.hmain(intargc,char*argv[]){charbuff[256];FILE*fp;intlcnt;if(argc3){printf(“Usagefindwordfilenameword\n”);exit(0);}if((fp=fopen(argv[1],”r”))==NULL){printf(“不能打开%s文件\n”,argv[1]);exit(1);}lcnt=1;while(fgets(buff,256,fp)!=NULL){if(str_index(argv[2],buff)!=-1)printf(“%3d:%s”,lcnt,buff);lcnt++;}fclose(fp);}intstr_index(charsubstr[],charstr[]){inti,j,k;for(i=0;str[i];i++)for(j=i,k=0;str[j]==substr[k];j++,k++)if(!substr[k+1])return(i);return(-1);}使用命令:findwordfindword.cprintf执行本程序的结果如下:10:printf(“Usagefindwordfilenameword\n”);15:printf(“不能打开%s文件\n”,argv[1]);22:printf(“%3d:%s”,lcnt,buff);4./*filename:fcat.c*/#includestdio.hunsignedchar*buffer;main(intargc,char*argv[]){inti;if(argc=2){printf(“Usage:fcatfile1file2file3\n”);exit(1);}buffer=(unsignedchar*)malloc(80);for(i=2;iargc;i++)fcat(argv[1],argv[i]);}fcat(chartarget[],charsource[]){FILE*fp1,*fp2;if((fp1=fopen(target,”a”))==NULL){printf(“文件%s打开失败!\n”,target);exit(1);}if((fp2=fopen(source,”r”))==NULL){printf(“文件%s打开失败!\n”,source);exit(1);}fputs(“\n”,fp1);fputs(“Filename:”,fp1);fputs(source,fp1);fputs(“\n--------------------------------------------------------------\n”,fp1);while(fgets(buffer,80,fp2))fputs(buffer,fp1);fclose(fp1);fclose(fp2);}5./*filename:replaceword.c*/#includestdio.h#includestring.hmain(intargc,char*argv[]){charbuff[256];FILE*fp1,*fp2;if(argc5){printf(“Usage:replacewordoldfilenewfileoldwordnewword\n”);exit(0);}if((fp1=fopen(argv[1],”r”))==NULL){printf(“不能打开%s文件\n”,argv[1]);exit(1);}if((fp2=fopen(argv[2],”w”))==NULL){printf(“不能建立%s文件\n”,argv[2]);exit(1);}while(fgets(buff,256,fp1)!=NULL){while(str_replace(argv[3],argv[4],buff)!=-1);fputs(buff,fp2);}fclose(fp1);fclose(fp2);}intstr_replace(charoldstr[],charnewstr[],charstr[]){inti
本文标题:第四讲--文件习题
链接地址:https://www.777doc.com/doc-1751282 .html