填空题
给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include<stdio.h>
#include<stdlib.h>
int fun(char*source,char*target)
{FILE*fs,*ft;char ch;
/**********found**********/
if((fs=fopen(source,______))==NULL)
return 0;
if((ft=fopen(target,'w'))==NULL)
return 0;
printf('\nThe data in file:\n');
ch=fgetc(fs);
/**********found**********/
while(!feof(______))
{putchar(ch);
/**********found**********/
fputc(ch,______);
ch=fgetc(fs);
}
fclose(fs);fclose(ft);
printf('\n\n');
return 1;
}
main()
{char sfname[20]='myfilel',tfname[20]='myfile2';
FILE*myf;int i;char c;
myf=fopen(sfname,'w');
pfintf('\nThe original data:\n');
for(i=1;i<30;i++){c='A'+rand()%25;fprintf(myf,'%c',c);printf('%c',c);}
fclose(myf);printf('\n\n');
if(fun(sfname,tfname))printf('Succeed!');
else printff'Fail!');
}
【正确答案】
【答案解析】fun函数要求实现的功能是将指定源文件中的内容复制到指定的目标文件中,即以只读方式打开源文件,以只写方式打开目标文件,然后将源文件内的内容复制到目标文件中。 第一空:将指定源文件中的内容复制到指定的目标文件中,源文件只需读,因此以只读方式打开即可。故第一空处应该是“if((fs=fopen(source,'r'))==NULL)”。 第二空:“while(!feof(______))”循环的目的是不断读取源文件直至到达源文件的末尾,循环结束标志是已达到文件的末尾。用feof()函数来检查是否已经到了文件末尾,文件状态检测函数feof()的调用形式是:feof(fs),如果已经到达文件尾函数返回非零值,否则返回0。故第二空处应该是“while(!feof(fs))”。 第三空:考察fputc函数的使用方法,fputc函数的调用形式是:fputc(ch,ft),ch是要输出的字符,由“ch=fgetc(fs)”从源文件读到字符ch,然后将ch写到目标文件中。故第三空处应该是“fputc(ch,ft);”。 [考点] 文件操作;指针。