A.fopen() B.fclose() C.fseek() D.rewind() 5.假设fp为文件指针并已指向了某个文件,在没有遇到文件结束标志时,函数feof(fp)的返回值为( )。
A.0 B.1 C.-1 D.一个非0的值
6.在函数fopen()中使用“a+”方式打开了一个已经存在的文件时,以下叙述正确的是( )。
A.文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,可做追加和读操作 B.文件打开时,原有文件内容不被删除,位置指针移动到文件首,可做重写和读操作 C.文件打开时,原有文件内容被删除,只可做写操作 D.以上三种说法都不正确 7.以下程序的运行结果是( )。 #include
{int i,n; FILE *fp;
if ((fp=fopen(\ {printf(\ return; }
for (i=1;i<=10;i++)
fprintf(fp, \ for (i=0;i<5;i++)
{fseek(fp,i*6L,SEEK_SET); fscanf(fp, \ printf(\ }
printf(\ fclose(fp); }
A.1 3 5 7 9 B.2 4 6 8 10 C.3 5 7 9 11 D.1 2 3 4 5 8.下面各选项中能正确实现文件打开操作的是( )。 A.fp=fopen(c:mydir\\info.dat, \B.fp=fopen(c:\\mydir\\info.dat, \ C.fp=fopen(\D.fp=fopen(\9.在C语言中,把文件缓冲区中的数据写入文件的过程称为( )。 A.输入 B.输出 C.修改 D.删除
10.当顺利地执行了文件的关闭命令之后,函数fclose()的返回值是( )。 A.-1 B.1 C.0 D.非零 11.有以下程序: #include
36
{FILE *fp; int i,k=4,n=5;
fp=fopen(\ for (i=1;i<4;i++) fprintf(fp, \ fclose(fp);
fp=fopen(\ fscanf(fp, \ printf(\ fclose(fp); }
程序执行后的输出结果是( )。 A.1 2 B.123 5 C.1 23 D.4 5 12.下面4个结论中正确的是( )。
A.在C语言中如果要对文件操作,必须先打开文件 B.在C语言中如果要对文件操作,必须先关闭文件 C.在C语言中对文件的操作实际上没有统一的规定
D.在C语言中如果要对文件操作,即使不打开文件也可以对其进行读/写 13.在C语言中系统定义的标准输出文件是指( )。 A.文本文件 B.二进制文件 C.键盘 D.显示器
14. 若将文件fp的读/写位置指针移动到距离文件头200个字节的位置,正确的操作是( )。
A.fseek(fp,200,0) B.fseek(fp,200,1) C.fseek(fp,200,2) D.ftell(200)
15.已知stu是一个数组,那么语句fread(&stu,3,6,fp);的功能是( )。
A.从fp所指的数据文件中读取6次3个字节的数据,然后存入数组stu中 B.从fp所指的数据文件中读取3次6个字节的数据,然后存入数组stu中
C.从数组stu中读取3次6个字节的数据,然后保存到fp所指的文件中 D.从数组stu中读取6次3个字节的数据,然后保存到fp所指的文件中 16.下列这段程序的功能是( )。 #include
{FILE *fout, *fin;
char c, infile[10], outfile[10];
printf(\ scanf(\
printf(\ scanf(\
if ((fin=fopen(infile, \
{printf(\}
if ((fout=fopen(outfile, \
37
{printf(\
}
while((c=fgetc(fin))!=EOF)
fputc(c,fout); fclose(fin); fclose(fout); }
A.分别将两个磁盘文件首尾合并,形成一个新的文件 B.分别显示两个文本文件的内容
C.将一个已知的源文件重命名为另一个新文件 D.把一个文件复制为另一个文件 二、填空题
1.C语言中的文件被看作是一个个的字符(或字节)按照一定的顺序组成的,因此文件又被称为 。
2.C语言中文件的分类有不同的标准。从用户的角度来看,文件可以分为 和 ;从文件的读/写方式来看,文件可以分为 和 ;从文件的编码方式来看,文件可以分为 和 。
3.在MS-DOS方式下,用来显示一个被指定的文本文件的内容使用 命令,用来显示一个或多个被指定文件的目录清单情况用 命令。
4.在C语言定义的多个标准设备文件中, 代表标准输入文件, 代表标准输出文件, 代表错误输出文件, 代表标准辅助设备, 代表标准打印机。
5.专门负责把文件的读/写位置指针重新指回文件首的函数是 ,能够把文件的读/写指针调整到文件中的任意位置的函数是 ,能够获取当前文件的读/写位置字节数的函数是 。
6.C语言系统为每个正在使用的文件在内存中开辟了一个 。 7.C语言对文件操作的一般顺序是 、 和 。
8.在Turbo C中,能在程序中调用一条MS-DOS的内部命令,或者是调用一个可执行文件的库函数是 ,实现文件删除操作的库函数是 ,对文件进行重命名的函数是 。 三、程序分析题
1.C盘下有一个非空的文本文件“test.txt”,其内容如下:“Hello,everyone!” 请问下述程序执行后的输出结果。
#include
{FILE *fp; char str[40];
fp=fopen(\ fgets(str,5,fp); printf(\ fclose(fp); }
2.已知三个不同的文本文件file1、file2和file3,它们各自的内容如下: 文件名 文件内容 file1 AAA#
38
file2 BBB# file3 CCC#
假设下面这段源程序对应的文件名为“myprog.c”,经编译和连接后生成的可执行文件名为“myprog.exe”。当在MS-DOS方式下执行下述命令:
myprog file1 file2 file3 则写出屏幕显示的结果。 #include
while((c=fgetc(fp0))!='#')
putchar(c+32); }
main(int argc, char *argv[]) {FILE *fp; int i=1;
while (--argc>0)
{fp=fopen(argv[i++],\ f(fp);
fclose(fp); } }
3.有如下程序,写出执行后的输出结果。 #include
int i,a[4]={10,20,30,40},b; fp=fopen(\ for (i=0;i<4;i++)
fwrite(&a[i],sizeof(int),1,fp); fclose(fp);
fp=fopen(\
fseek(fp,-2L*sizeof(int),SEEK_END);
/*(使文件位置指针从文件尾向前移动2*sizeof(int)个字节)*/ fread(&b,sizeof(int),1,fp); printf(\ fclose(fp); }
四、程序填空题
1.从键盘上输入某个文本文件的文件名,要求把该文件的内容显示在屏幕上,请将该程序补充完整。
#include
char c,filename[20];
39
printf(\scanf(\
if ((fp=fopen(filename, \
{printf(\}
while (!feof(fp))
{ (1) ; putchar(c); } }
2.下面程序的功能是从键盘上输入一个字符串,把该字符串中的小写字母转化为大写字母,然后输出到文件“eng.txt”文件中,请根据题目要求将程序补充完整。
#include
if ((fp=fopen(\ (1) ))==NULL) {printf(\}
printf(\gets(str);
while(str[i])
{if (str[i]>= 'a'&& str[i]<= 'z') (2) ; fputc(str[i],fp); i++; }
fclose(fp);
fp=fopen(\ (3) ); fgets(str, (4) ,fp); printf(\fclose(fp); }
3.以下程序用来统计C盘根目录下文本文件“file.txt”中字符的个数,请将程序补充完整。
#include
if ((fp=fopen(\ {printf(\}
while(fgetc(fp)!=EOF) (1) ; 40
fclose(fp);
printf(\}
4.下面的程序将磁盘中一个文件复制到另一个文件中,两个文件名在命令行中给出(假设文件名无误),请将程序补充完整。
#include
main(int argc, char * argv[]) {FILE *fp1,*fp2;
if (argc< (1) ) {printf(\}
fp1=fopen(argv[1], \fp2=fopen(argv[2], \while( (2) ) fputc(fgetc(fp1),fp2); fclose(fp2); fclose(fp1); }
41