1、一、选择题:
(1)以下叙述中错误的是
A)C语言中对二进制文件的访问速度比文本文件快
B)C语言中,随机文件以二进制代码形式存储数据
C)语句 FILE fp; 定义了一个名为fp的文件指针
D)C语言中的文本文件以ASCII码形式存储数据
(2)有以下程序
#include
2、printf(fp,"%d ",i); if(i%3==0) fprintf(fp,"\n"); } rewind(fp); fscanf(fp, "%d%d", &k, &n); printf("%d %d\n", k, n); fclose(fp); } 程序运行后的输出结果是 A)0 0 B)123 45 C)1 4 D)1 2 (3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是
3、 A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp) (4)有以下程序 #include "stdio.h" void WriteStr(char *fn,char *str) { FILE *fp; fp=fopen(fn,"W"); fputs(str,fp); fclose(fp); } main() { WriteStr("t1.dat","start"); WriteStr("t1.d
4、at","end");
}
程序运行后,文件t1.dat中的内容是
A)start
B)end
C)startend
D)endrt
(5) 有如下程序
#include
5、中的内容为
A) goodabc
B) abcd
C) abc
D) abcgood
(6) 有以下程序
#include
6、n); printf(“%d %d\n”,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
7、 fp=fopen("data.dat","wb"); for(i=0;i<4;i++) fwrite(&a[i],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("%d\n",B) ; } 执行后输出结果是 A) 2
8、 B) 1 C) 4 D) 3 (8) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为 A) 0 B) 1 C) -1 D) 一个非0值 (9) 下列关于C语言数据文件的叙述中正确的是 A) 文件由ASCII码字符序列组成,C语言只能读写文本文件 B) 文件由二进制数据序列组成,C语言只能读写二进制文件 C) 文件由记录序列组成,可按数据的存放形式分为二进制文件
9、和文本文件
D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(10) 以下叙述中不正确的是
A)C语言中的文本文件以ASCⅡ码形式存储数据
B)C语言中对二进制文件的访问速度比文本文件快
C)C语言中,随机读写方式不适用于文本文件
D)C语言中,顺序读写方式不适用于二进制文件
11) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
#include
10、
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
11、 i=20,j=30,k,n; fp=fopen(“d1.dat”“w”); fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j); fclose(fp); fp=fopen(“d1.dat”, “r”); fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%d\n”,k,n); fclose(fp); } 程序运行后的输出结果是 A) 20 30 B) 20 50 C) 30 50 D) 30 20 (13) 以下叙述
12、中错误的是 A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B) 在程序结束时,应当用fclose函数关闭已打开的文件 C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据 D) 不可以用FILE定义指向二进制文件的文件指针 (14) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是 A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+") C)
13、 fopen("A:\user\abc.txt","rb")
C) fopen("A:\\user\\abc.txt","w")
(15) 下面的程序执行后,文件testt.t中的内容是
#include 14、ain()
{ 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程序中,可把整型数以二进制形式存放到文件中的函数是 15、
A) fprintf函数
B) fread函数
C) fwrite函数
D) fputc函数
(18) 标准函数 fgets(s, n, f) 的功能是
A) 从文件f中读取长度为n的字符串存入指针s所指的内存
B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C) 从文件f中读取n个字符串存入指针s所指的内存
D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存
二、填空题:
(1) 已有文本文件test.txt,其中的内容为:Hello,everyone! 16、以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是 【1】 。
#include 17、空。
#include "stdio.h"
main()
{ FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r"))==NULL)
{ pirntf("Open error\n"); exit(0);}
while( 【3】 )
{ fgetc(fp); num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
(4) 以下程序段打开文件后,先利 18、用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE *myf; ling f1;
myf= 【4】 (“test.t”,“rb”);
fseek(myf,0,SEEK_END); f1=ftel(myf);
fclose(myf);
printf(“%d\n”,f1);
(5) 下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。
#include “stdio.h”
FILE *fp;
19、
{ char ch;
if( (fp=fopen ( 【5】 ) )= = NULL)exit(0);
while( (ch=getchar( )) !=’@’) fputc (ch,fp);
fclose(fp);
}
(6) 以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。
#include 20、 char ch,fname[32]; int count=0;
printf("Input the filename :"); scanf("%s",fname);
if((fp=fopen( 【6】 ,"w+"))==NULL)
{ printf("Can't open file:%s \n",fname); exit(0);}
printf("Enter data:\n");
while((ch=getchar())!="#"){ fputc(ch, 21、fp); count++;}
fprintf( 【7】 ,"\n%d\n", count);
fclose(fp);
}
(7) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.
#include 22、r(i=0; i<10; i++)
{ scanf("%d",&j);
fwrite(&j,sizeof(int),1, 【9】 );
}
fclose(fp);
}
(8) 以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。
#include
main()
{ FILE *fp;
char str[100]; 23、 int i=0;
if((fp=fopen("text.txt",【10】))==NULL)
{ printf("can't open this file.\n");exit(0);}
printf("input astring:\n"); gest(str);
while (str[i])
{ if(str[i]>='a'&&str[i]<='z')
str[i]=【11】;
fputc(str[i],f 24、p);
i++;
}
fclose(fp);
fp=fopen("test.txt",【12】);
fgets(str,100,fp);
printf("%s\n",str);
fclose(fp);
}
(9) 下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。
#include 25、 { char ch;
if((fp=fopen( 【13】))==NULL)exit(0);
while ((ch=getchar())!='@')fputc(ch,fp); 【14】
(10) 以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空.
#include 26、f((fp=【15】)==NULL)
{ printf("Cannot open\n"); exit(0);}
printf("Enter data\n");
while((ch=getchar())!='#') fputc(【16】,fp);
fclose(fp); }
11) 下面的程序用来统计文件中字符的个数,请填空。
#include 27、rintf( "Can't open file! \n"); exit(0);}
while 【17】
{ fgetc(fp); num++;}
printf("num=%d\n", num);
fclose(fp);
}
(12)以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。
#include 28、{ printf("Parameters missing!\n"); exit(0); }
if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
while( 【19】 )fputc(fgetc(f1),f2);
fclose(f1); fclose(f2); }
答案:
一、选择题:
01) C 02) D 03) D 04) 29、 B 05) C 06) B 07) D 08) A 09) D 10) D
11) A 12) A 13) D 14) B 15) A 16) C 17) A 18) 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
30、 (7) fp
(8) "bi.dat"
(9) fp
(10) "w"或"w+"或"wt"或"w+t"或"""wt+"
(11) str[i]-32 或str[i]-('a'-'A'或str[i]-'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)






