一、选择题
16.1 标准库函数fgets(s,n,f)的功能是
A) 从文件f中读取长度为n的字符串存入指针s所指的内存
B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
D) 从文件f中读取n个字符串存入指针s所指的内存
D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存
答案:D
16.2 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
A) EOF
B) -1
C) 非零值
D) NULL
答案:C
二、填空题
16.3 以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。(假定文件名无误),请填空。
#include "stdio.h"
main(int argc, char *argv[])
{ FILE *f1,f2; char ch;
if(argc<_____) { printf("命令行参数错!\\n"); exit(0); }
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(_____) fputc(fgetc(f1),______);
________;_________;
}
答案:1 !feof(f1) f2 fclose(f1) fclose(f2)
16.4 以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中,
用#号作为结束输入标志。请填空。
#include "stdio.h"
main()
{ FIlE *fp; char ch,fname[10];
printf("Enter the name of file\\n"); gets(fname);
if((fp=_____)==NULL) { printf("Open error\\n"); exit(0); }
printf("Enter data:\\n");
while((ch=getchar())!=\’#\’) fputc(_____,fp);
fclose(fp);
}
答案:fopen(fname,"w") ch
16.5 以下程序用来统计文件中字符的个数。请填空。
#include "stdio.h"
main()
{ FILE *fp; long num=0;
if((fp=fopen("fname.dat",____)==NULL)
{ printf("Open error\\n"); exit(0); }
while _____
{ _____; num++; }
printf("num=%d\\n",num);
fclose(fp);
}
答案:"r" (!feof(fp)) fgetc(fp)
16.6 以下程序编译,连接后生成可执行文件cpy.exe。假定磁盘当前目录下有三个文本文件其文件名
和内容分别为:
文件名 内容
a aaaa#
b bbbb#
c cccc#
当在DOS当前目录下键入:cpy a b c
则程序输出_______。
#include "stdio.h"
void fc(FILE *);
main(int argc, char *argv[])
{ FILE *fp; int i=1;
while(--argc>0)
{ fp=fopen(argv[i++],"r");
fc(fp);
fclose(fp);
}
}
void fc(FILE *ifp)
{ char c;
while (c=getc(ifp)!=\’#\’) putchar(c-32);
}
答案:AAAABBBBCCCC