问答题 给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include int fun(char *source, char *target) {FILE *fs,*ft; char ch; /********found* *********/ if ((fs=fopen(source,【1】)) ==NULL) return 0; if ((ft=fopen(target,"w"))==NULL ) return 0; printf ("/nThe data in file :/n"); ch=fgetc(fs); /*********found**********/ while (! feof (【2】) ) { putchar(ch); /********** found* *********/ fputc (ch,【3】) ; 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"); printf("/nThe original data :/n"); for(i=l; 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!"); }
【正确答案】正确答案:(1)"r" (2)fs (3)ft
【答案解析】解析:第一空:将指定源文件中的内容复制到指定的目标文件中,源文件只需读,因此,以只读方式打开即可,故第一空处应该是“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);”。