[说明] 下面程序的功能是将多个文件的内容同时输出在屏幕上,文件名都作为参数传入,命令执行为:cat file1 file2 file3,即同时输出file1、file2、file3的内容。[程序]#include <stdio.h>#include <stdlib.h>void fileeopy(FILE * ifp, FILE *ofp){ int c; while((c=getc( (1) ))!=EOF) pute(c, (2) ); }int main(int arge, char *argv[]){ FILE *fp; while( (3) >0)if((fp=fopen( (4) ,"r"))= =NULL){ printf("Can’t open file\n"); return 1;}else { filecopy(fp, stdout); fclose( (5) );} return 0;}
参考答案:
解析:(1) ifp (2) ofp (3) - -argc (4) * ++argv (5) fp (1)~(2):此处while循环用于复制两个文件中的信息,即从ifp中读取,向ofp中写入;(3)此处对多个参数(文件名)进行循环,其中argc代表参数的个数,并且计数时包括了最前面的可执行文件名,以cat filel file2 file3为例,argc=4。因此应该填入- -argc才符合循环的判断条件;(4)此处用于获取文件名并将其打开。字符串数组 argv保存了全体参数的值,以cat filel file2 file3为例, argv[0]=cat,argv[1]=file1…,于是应排除argv[0],即填入* ++argv才能正确获取文件名;(5)在对文件操作完毕后应对文件句柄做关闭的动作,此处即调用fclose函数来关闭已经打开的文件句柄fp。