阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【说明】 编写程序,利用带参数的主函数main(),实现二进制文件的复制。比如,若该程序已生成可执行文件filebin.exe,在DOS操作系统命令状态下键入如下命令行:

admin2010-01-15  29

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
    【说明】
   编写程序,利用带参数的主函数main(),实现二进制文件的复制。比如,若该程序已生成可执行文件filebin.exe,在DOS操作系统命令状态下键入如下命令行:
   filebin f0.fil f1.fil
   则实现将已存在的二进制文件f1.fil依原样复制给名为f0.fil的二进制文件。
   【函数】
   #include<stdio.h>
   void fcopy(FILE *fout, FILE *fin)
   {
       char k;
       do{
         k=fgetc((1));
         if(feof(fin))
           break;
         fputc((2));
         }while(1);
       }
       void main(int argc,char *argv[])
       {
           FILE *fin,*fout;
           if(argc!=(3))
               return;
           if((fin=fopen(argv[2],"rb"))==NULL)
               return;
       fout=(4);
       fcopy((5));
       fclose(fin);
       fclose(fout);
   }

选项

答案(1)fin (2)k,fout (3)3 (4)fopen(argv[1],"wb") (5)fout,fin

解析 本题考查用C语言对二进制文件的操作。
   题目要求程序实现二进制文件的复制。此题的关键是我们对文件基本操作的掌握,如文件的打开,对文件内容进行读/写等。下面来具体分析程序。
   第(1)空是在复制函数fcopy()中,这个函数的功能是对文件进行复制,函数中的两个参数分别是指向被操作的两个文件的指针。此空是函数fgetc()的参数,这个函数的作用是从文件中逐个读字符,其参数是文件要读的地址,结合后面的if(feof(fin)),可以很清楚地知道,当前操作的文件是指针fin指向的文件,因此此空答案为fin。
   第(2)空也在复制函数fcopy()中,是函数fputc()的参数,这个函数的作用与函数fgetc()相反,是往文件中写内容,其参数是当前文件中要写的内容和地址。根据题目的意思,应该是往另一个文件中写内容,因此此空答案为k,fout。
   第(3)空在主函数中,此空是一个条件判断语句的条件,看它的内容是否等于变量argc的内容,如果不等,则程序返回。题目中要求在DOS操作系统命令状态下键入命令行“filebin f0.fil f1.fil”后,实现将已存在的二进制文件f1.fil依原样复制给名为f0.fil的二进制文件。那么主函数参数argc的值应该等于3,是后面argv[]指针数组中内容的个数,而数组中的内容分别是argv[0]="filebin",argv[1]="f0.fil",argv[2]="f1.fil",因此此空答案为3。
   第(4)空是给指针变量fout赋一个值,或者说是让指针变量fout指向该地方,从上面的程序中知道指针变量fout指向一个文件,那么此空的任务就是打开一个文件,在 C语言中打开一个文件用函数fopen(),这个函数一般有两个参数,第一个参数是要打开的文件名(指针数组argv[]的第二个元素),第二个参数是对文件的操作属性,这里要往文件中写数据,因此此空答案为fopen(argv[1],"wb")。
   第(5)空是复制函数fcopy()的两个参数,程序到这里,这两个参数应该很好确定了,第一个参数是指向被写文件的指针变量fout,而第二个参数是指向被读文件的指针变量fin,因此此空答案为fout,fin。
转载请注明原文地址:https://kaotiyun.com/show/YIjZ777K
0

最新回复(0)