问答题 [说明] 下面程序的功能是将多个文件的内容同时输出在屏幕上,文件名都作为参数传入,命令执行为:cat file1 file2 file3,即同时输出file1、file2、file3的内容。 [程序] #include <stdio.h> #include <stdlib.h> void fileeopy(FILE * ifp, FILE *ofp) { int c; while((c=getc({{U}} (1) {{/U}}))!=EOF) pute(c, {{U}}(2) {{/U}}); } int main(int arge, char *argv[]) { FILE *fp; while( {{U}}(3) {{/U}}>0) if((fp=fopen( {{U}}(4) {{/U}},"r"))= =NULL){ printf("Can't open file/n"); return 1; } else { filecopy(fp, stdout); fclose({{U}} (5) {{/U}}); } 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。