C语言程序设计(222-6)

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:26:45
请将下列程序填写完整。本程序完成吧一系列命名文件与标准输出连接起来,并在终端上显示出文件内容。

#include<stdio.h>
main(int argc,char *argv[])
{___________;
if(argc==1)
filecopy(stdin)
else
while(--argc>0)
if((fp=___________)==NULL)
{
printf("can't open%s\n",*argv);
break;
}
else
filecopy(fp);
_____________
}
filecopy(FILE*fp)
{
int c;
while((c=_________)!=EOF)
putc(c,stdout);
}

4个空,该怎么填?
filecopy()是什么,函数吗?那,它是什么函数,有什么作用?
??
stdin和stdout是什么东西?
有什么作用?

我用你说的那些
程序调试成功
但我加了void filecopy(FILE *fp);
就不行了
不加这个
就行
这是为什么?
子函数再主函数之后,不是要说明呀?
不然,程序会出错
那为什么,我加了void filecopy(FILE *fp);
反而出错
不加void filecopy(FILE *fp);就可以运行

(程序出错提示:“函数声明和实现部分的类型不匹配。 ”)

???

看你的程序最后四行,filecopy是本程序自定义的函数,自定义函数在main之后,应该有原型说明,所以第一个空应该为原型申明void filecopy(FILE *);但是这个程序居然就这么不讲道理,没有定义变量fp,所以第一空为变量定义:
FILE *fp;

根据filecopy函数的功能是显示指定文件内容,那么最后一个空的内容应该为:
fgetc(fp)

现在看第二个空,看形式是显示所有命令行参数的内容,这一语句应该打开文件*argv,应填:
fopen(*argv,"r")

现在看第三个空,应该是关闭文件,应填:
fclose(fp);