◇邵东职业中专2007年高三C语言习题◇本试卷共5页第1页制卷人:容利平第十二章文件基础训练一、填空题1、文件是指___________________________________________________________。2、根据数据的组织形式,C中将文件分为______ASCII码文件________和___二进制文件___________两种类型。3、现要求以读写方式,打开一个文本文件stu1,写出语句:__FILE*fpfp=fopen(“stu.txt”,”r+”);_______________。__________________________________。4、现要求将上题中打开的文件关闭掉,写出语句:___fclose(fp);__________________。5、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则打开文件方式字符串应该是___fopen(“a.txt”,”wb+”);__________。二、选择题1、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()。A)fopen(A:\user\abc.txt,r)B)fopen(A:\\user\\abc.txt,r+)C)fopen(A:\user\abc.txt,rb)C)fopen(A:\\user\\abc.txt,w)2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()。A)0B)1C)-1D)一个非0值3、当已经存在一个file1.txt文件,执行函数fopen(“file1.txt”,”r+”)的功能是()。A)打开file1.txt文件,清除原有的内容;B)打开file1.txt文件,只能写入新的内容;C)打开file1.txt文件,只能读取原有内容;D)打开file1.txt文件,可以读取和写入新的内容;4、fread(buf,64,2,fp)的功能是:()A)从fp所指向的文件中,读出整数64,并存放在buf中;B)从fp所指向的文件中,读出整数64和2,并存放在buf中;C)从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;D)从fp所指向的文件中,读出64个字节的字符,并存放在buf中;5、以下程序的功能是()。main(){FILE*fp;charstr[]=”Beijing2008”;fp=fopen(“file2”,”w”);fputs(str,fp);fclose(fp);}A)在屏幕上显示“Beiing2008”;B)把”Beijing2008”存入file2文件中;C)在打印机上打印出“Beiing2008”;D)以上都不对;6、以下程序是建立一个名为myfile的文件,并把从键盘输入字符存入该文件,当键盘上输入结束时关闭该文件。选择正确内容填空。main(){FILE*fp;charc;charname[10];fp=fopen(“myfile”,_”wb”_______);do{c=getchar();fputc(c,fp);}while(c!=EOF);fclose(fp);}(1)A)fgetsB)fopenC)fcloseD)fgetc(2)A)“r”B)“r+”C)“w”D)“w+”三、设计题1、编写一个程序,以只读方式打开一个文本文件filea.txt,如果打开,将文件地址放在fp文件指针中,打不开,显示“Cann’topenfilea.txtfile\n.”,◇邵东职业中专2007年高三C语言习题◇本试卷共5页第2页制卷人:容利平然后退出。voidmain(){FILE*fp;if((fp=fopen(filea.txt,r))='\0');printf()}综合训练一、填空题1、以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;lingf1;myf=_________(“test.t”,“rb”);fseek(myf,0,SEEK_END);f1=ftel(myf);fclose(myf);printf(“%d\n”,f1);2、下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.#includestdio,hFILE*fp;main(){inti,j;if((fp=fopen(__”bi.dat”__________,wb))==NULL)exit(0);for(i=0;i10;i++){scanf(%d,&j);fwrite(&j,sizeof(int),1,______fp_______);}fclose(fp);3、以下程序用来统计文件中字符个数。请填空。#includestdio.hmain(){FILE*fp;longnum=0L;if((fp=fopen(fname.dat,r))==NULL){pirntf(Openerror\n);exit(0);}while(___!feof(fp)______________){fgetc(fp);num++;}printf(num=%1d\n,num-1);fclose(fp);}4、以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。#includestdio.hmain(){FILE*fp;charch,fname[32];intcount=0;printf(Inputthefilename:);scanf(%s,fname);if((fp=fopen(_fname____________,w+))==NULL){printf(Can'topenfile:%s\n,fname);exit(0);}printf(Enterdata:\n);while((ch=getchar())!=#){fputc(ch,fp);count++;}fprintf(____________,\n%d\n,count);fclose(fp);}5、以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。#includemain(){FILE*fp;charstr[100];inti=0;if((fp=fopen(text.txt,___________))==NULL){printf(can'topenthisfile.\n);exit(0);}◇邵东职业中专2007年高三C语言习题◇本试卷共5页第3页制卷人:容利平printf(inputastring:\n);gest(str);while(str[i]){if(str[i]='a'&&str[i]='z')str[i]=_____________;fputc(str[i],fp);i++;}fclose(fp);fp=fopen(test.txt,______________);fgets(str,100,fp);printf(%s\n,str);fclose(fp);}6、下面程序由键盘输入字符,存放到文件中,用!结束输入,请在____________上填空。#includestdio.hmain(){FILE*fp;charch;charfname[10];printf(“Inputnameoffile\n”);gets(fname);if((fp=fopen(fname,“w”))==NULL){printf(“cannotopenfile\n”);exit(0);}printf((“Enterdata:\n”);while(_______________!=’!’)//提示:从键盘输入一个字符,如不是!fputc(__________________);//将从键盘输入的字符存入打开的文件中fclose(fp);}7、下面程序用变量count统计文件中字符的个数。请在____________中填写正确内容。#includestdio.hmain(){FILE*fp;longcount=0;if((fp=fopen(“letter.txt”,___________))==NULL){printf(“cannotopenfile\n”);exit(0);}while(!feof(fp))//!feof(fp)----未到文件尾,为真//feof()函数判断文件指针是否到文件尾,到文件尾,函数返回非0值,若未到文件尾,函数返回值0{___________________;//提示:从文件读入一个字符______________;}printf(“count=%ld\n”,count);_________________;}二、选择题1、下面的程序执行后,文件testt.t中的内容是()。#includestdio.hvoidfun(char*fname.,char*st){FILE*myf;inti;myf=fopen(fname,“w”);for(i=0;istrlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun(“test”,“newworld”;fun(“test”,“hello,”0;)A)hello,B)newworldhello,C)newworldD)hello,rld2、有以下程序#includestdio.hmain(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j);fclose(fp);◇邵东职业中专2007年高三C语言习题◇本试卷共5页第4页制卷人:容利平fp=fopen(“d1.dat”,“r”);fp=fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是()。A)2030B)2050C)3050D)30203、若有以下定义和说明:#iincludestdio.hstructstd{charnum[6];charname[8];floatmark[4];}a[30];FILE*fp;设文件中以二进制形式存有许多学生的数据,且已经正确打开,文件指针定位在文件开头,若要从文件中读出30个学生的数据放入a数组中,以下正确的语句是()。A)fread(a,sizeof(structstd),30,fp);B)fread(&a[i],sizeof(structstd),1,fp);C)fread(a+i,sizeof(structstd),1,fp);D)fread(a,structstd,30,fp);4、设有以下结构体类型:structst{charname[8];intnum;floats[4];}student[20];并且结构体数组student中的元素都已经有值,若要将这些元素写到fp所指向的磁盘文件中,以下不正确的形式是()。A)fwrite(student,sizeof(structst),20,fp);B)fwrite(student,20*sizeof(structst),1,fp);C)fwrite(student,10*sizeof(structst),10,fp);D)for(i=0;i20;i++)fwrite(student+i,sizeof(structst),1,fp);5、以下程序是将一个名为old.dat的文本文件拷贝到一个名为new.dat的新文本文件中,请选择正确内容填空。#includestdio.hmain(){FILE*fp1,*fp2;i