1、一、选择题:(1)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句 FILE fp; 定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(2)有以下程序#include main() FILE *fp; int i, k, n; fp=fopen(data.dat, w+); for(i=1; i6; i+) fprintf(fp,%d ,i); if(i%3=0) fprintf(fp,n); rewind(fp); fscanf(fp, %d%d, &k, &n); printf(%d %dn,
2、 k, n); fclose(fp);程序运行后的输出结果是A)0 0B)123 45C)1 4D)1 2(3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是 A)feof(fp)B)ftell(fp)C)fgetc(fp)D)rewind(fp)(4)有以下程序#include stdio.hvoid WriteStr(char *fn,char *str) FILE *fp; fp=fopen(fn,W); fputs(str,fp); fclose(fp);main() WriteStr(t1.dat,start); WriteStr(t1.dat,end);程序运行
3、后,文件t1.dat中的内容是 A)startB)endC)startendD)endrt(5) 有如下程序#include main()FILE *fp1; fp1=fopen(f1.txt,w); fprintf(fp1,abc); fclose(fp1);若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为A) goodabc B) abcd C) abc D) abcgood(6) 有以下程序#include main( ) FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i4;i+)
4、 fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”); fscanf(fp,”%d%d”,&k,&n); printf(“%d %dn”,k,n); fclose(fp);执行后输出结果是A) 1 2 B) 123 0 C) 1 23 D) 0 0(7) 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)#include main( ) FILE *fp; int i,a4=1,2,3,4,b; fp=fopen(data.
5、dat,wb); for(i=0;i4;i+) fwrite(&ai,sizeof(int),1,fp); fclose(fp);fp=fopen(data.dat ,rb);fseek(fp,-2L*sizeof(int).SEEK_END) ;fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/fclose(fp);printf(%dn,B) ;执行后输出结果是A) 2 B) 1 C) 4 D) 3(8) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为A) 0 B) 1 C) 1 D) 一个
6、非0值(9) 下列关于C语言数据文件的叙述中正确的是A) 文件由ASCII码字符序列组成,C语言只能读写文本文件B) 文件由二进制数据序列组成,C语言只能读写二进制文件C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(10) 以下叙述中不正确的是A)语言中的文本文件以ASC码形式存储数据B)语言中对二进制文件的访问速度比文本文件快C)语言中,随机读写方式不适用于文本文件D)语言中,顺序读写方式不适用于二进制文件11) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时
7、结束输入和输出操作,但程序有错。#includemain()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没有定义(12) 有以下程序#include main() FILE *fp; int i=20,j=30,k,n;fp=fopen(“d1.dat”“w”);fprintf(fp,“%dn”,i
8、);fprintf(fp,“%dn”j);fclose(fp);fp=fopen(“d1.dat”, “r”);fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%dn”,k,n);fclose(fp);程序运行后的输出结果是A) 20 30 B) 20 50C) 30 50 D) 30 20(13) 以下叙述中错误的是A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以B) 在程序结束时,应当用fclose函数关闭已打开的文件C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D) 不可以用FILE定义指向二进制文件的文件指针
9、(14) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A) fopen(A:userabc.txt,r) B) fopen(A:userabc.txt,r+)C) fopen(A:userabc.txt,rb) C) fopen(A:userabc.txt,w)(15) 下面的程序执行后,文件testt.t中的内容是#include void fun(char *fname.,char *st) FILE *myf; int i;myf=fopen(fname,“w” );for(i=0;istrlen(st); i+)fputc(sti
10、,myf);fclose(myf);main() fun(“test”,“new world”; fun(“test”,“hello,”0;)A)hello, B)new worldhello,C)new world D) hello, rld(16) 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是A) EOF B) 1 C) 非零值 D) NULL(17) 在C程序中,可把整型数以二进制形式存放到文件中的函数是A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数(18) 标准函数 fgets(s, n, f) 的功能是A
11、) 从文件f中读取长度为n的字符串存入指针s所指的内存B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C) 从文件f中读取n个字符串存入指针s所指的内存D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存二、填空题:(1) 已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是 【1】 。#includemain()FILE*fr;charstr40;fgets(str,5,fr);printf(%sn,str);fclose(fr);(2) 若fp已
12、正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen( 2 );。(3) 以下程序用来统计文件中字符个数。请填空。#include stdio.hmain() FILE *fp; long num=0L; if(fp=fopen(fname.dat,r)=NULL) pirntf(Open errorn); exit(0); while( 【3】 ) fgetc(fp); num+; printf(num=%1dn,num-1); fclose(fp);(4) 以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ft
13、ell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE *myf; ling f1;myf= 【4】 (“test.t”,“rb”); fseek(myf,0,SEEK_END); f1=ftel(myf);fclose(myf);printf(“%dn”,f1);(5) 下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。#include “stdio.h”FILE *fp; char ch; if( (fp=fopen ( 【5】 ) )= = NULL)exit(0); while( (ch=getchar( ) !=) f
14、putc (ch,fp); fclose(fp);(6) 以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。 #include main( ) FILE *fp; char ch,fname32; int count=0; printf(Input the filename :); scanf(%s,fname); if(fp=fopen( 【6】 ,w+)=NULL) printf(Cant open file:%s n,fname); exit(0); printf(Enter data:n); whil
15、e(ch=getchar()!=#) fputc(ch,fp); count+; fprintf( 【7】 ,n%dn, count); fclose(fp); (7) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空. #include FILE *fp; main() int i,j; if(fp=fopen( 【8】, wb)=NULL) exit(0); for(i=0; i=a&stri=z) stri=【11】; fputc(stri,fp); i+; fclose(fp); fp=fopen(test.txt,【12】); fgets(str
16、,100,fp); printf(%sn,str); fclose(fp); (9) 下面程序把从终端读入的文本用作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。#include FILE *fp;main() char ch;if(fp=fopen( 【13】)=NULL)exit(0); while (ch=getchar()!=)fputc(ch,fp); 【14】 (10) 以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空.#include main() FILE * fp;char ch,fname10;pri
17、ntf(lnput the name of filen);gets(fname);if(fp=【15】)=NULL) printf(Cannot openn); exit(0);printf(Enter datan);while(ch=getchar()!=#) fputc(【16】,fp); fclose(fp); 11) 下面的程序用来统计文件中字符的个数,请填空。#include main() FILE *fp;long num=0;if( fp=fopen(fname.dat,r)=NULL) printf( Cant open file! n); exit(0);while 【17】
18、 fgetc(fp); num+;printf(num=%dn, num);fclose(fp); (12)以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。#include main(int argc, char *argv) FILE *f1,*f2; char ch; if(argc 【18】 ) printf(Parameters missing!n); exit(0); if( (f1=fopen(argv1,r) = = NULL)|(f2=fopen(argv2,w) = = NULL) printf(Can not open file!n); exi
19、t(0); while( 【19】 )fputc(fgetc(f1),f2); fclose(f1); fclose(f2); 答案:一、选择题:01)C02)D03)D04) B05)C06)B07)D08)A09)D10)D11)A12)A13)D14)B15)A16)C17)A18)B二、填空题:(1) Hell(2) “d1.dat”,”rb”或 “d1.dat”,”r+b”或”d1.dat”,”rb+”(3) !feof(fp)(4) fopen(5) “bi.dat”,“w”或“bi.dat”,“wt”或“bi.dat”,“w+t”(6) fname(7) fp(8) bi.dat(9) fp(10) w或w+或wt或w+t或wt+(11) stri-32 或stri-(a-A或stri-a+A(12) r或r+或r+t或rt+(13) bi.dat,w(14) fclose(fp)(15) fopen(fname,w)(16) ch(17) (!feof(fp)(18) 3(19) !feof(f1)