预期的声明错误(c错误)

预期的声明错误(c错误),c,C,这是我的密码 #include<stdio.h> int main( int argc ,char *argv[] ) { FILE *fp; void filecopy( FILE * a, FILE *b ) if (argc == 1) { filecopy(stdin,stdout); } else { while(--argc > 0) {

这是我的密码

#include<stdio.h>

int main( int argc ,char *argv[] )
{
    FILE *fp;
    void filecopy( FILE * a, FILE *b )

    if (argc == 1)
    {
        filecopy(stdin,stdout);
    }

    else 
    {
        while(--argc > 0)
        {
            if ((fp = fopen(*++argv,"r")) == NULL)
            {   
                printf("no open".*argv);
            }
            else
            {
                filecopy(fp,stdout);
                fclose(fp);
            }
        }
    }
    return 0;
}

void filecopy ( FILE *ifp ,FILE *ofp )
{
    int c;
    while ( (c = getc(ifp)) != EOF)
    {
        putc(c , ofp);
    }
}
为什么我会有这些错误请告诉我? 非常感谢。
sudhanshu

您在这行末尾缺少一个分号:

void filecopy( FILE * a, FILE *b )
这应该是

void filecopy( FILE * a, FILE *b );
因为这是一个函数原型

此外,该行不合法C:

printf("no open".*argv);
这应该是这样的

printf("no open");

希望这有帮助

声明需要以分号结尾

void filecopy( FILE * a, FILE *b );

(这是主函数中的声明,而不是后面的函数定义。)

缺少分号。

void filecopy( FILE * a, FILE *b );  /* Put semi-colon on the end! */

这一行:

printf("no open".*argv);

毫无意义。你想让它做什么?

对不起,实际上它是(“没有打开”,*argv);即使您的意思是
printf(“无打开”、*argv)
您需要一个
%s
(或其他一些
%-格式化程序
)来证明传递第二个参数是正确的。
printf("no open".*argv);