给定程序的功能是:
调用函数fun将指定源文件中的内容
复制到指定的目标文件中,
复制成功时函数返回值为1,
失败时返回值为0。
在复制的过程中,把复制的内容
输出到终端屏幕。
主函数中源文件名放在变量sfname中,
目标文件名放在变量tfname中。
请在程序的下划线处填入正确的内容并把下划线删除,
使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
【解题思路】
第一空:将指定源文件中的内容复制到指定的目标文件中,
源文件只需读,因此以只读方式打开即可,
故第一空处应该是“if((fs=fopen(source, "r"))==NULL)”。
第二空:“while(!feof(___2___))”循环的目的是
不断读取源文件直至到达源文件的末尾,
循环结束标志是已达到文件的末尾。
用feof()函数来检查是否已经到了文件末尾,
文件状态检测函数feof()的调用形式是:feof(fs),
如果已经到达文件尾函数返回非零值,否则返回0,
故第二空处应该是“while(!feof(fs))”。
第三空:考察fputc函数的使用方法,
fputc函数的调用形式是:fputc(ch, ft),
ch是要输出的字符,
由“ch=fgetc(fs)”从源文件读到字符ch,
然后将ch写到目标文件中,故第三空处应该是“fputc(ch,ft);”。
#include <stdio.h>
#include <stdlib.h>
int fun(char *source, char *target)
{FILE *fs,*ft; char ch;
if((fs=fopen(source, "r"))==NULL)
return 0;
if((ft=fopen(target, "w"))==NULL)
return 0;
printf("\nThe data in file :\n");
ch=fgetc(fs);
while(!feof(fs))
{putchar(ch);
fputc(ch,ft);
ch=fgetc(fs);
}
fclose(fs); fclose(ft);
printf("\n\n");
return 1;
}
main()
{
char sfname[20] ="myfile1",tfname[20]="myfile2";
FILE *myf; int i; char c;
myf=fopen(sfname,"w");
printf("\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
printf("Fail!");
}