预期声明错误(c错误)

时间:2012-05-25 02:06:51

标签: 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)
        {
            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);
    }
}

这些是我的错误:

con.c: In function 'filecopy':
con.c:8: error: expected declaration specifiers before 'if'
con.c:13: error: expected declaration specifiers before 'else'
con.c:29: error: expected declaration specifiers before 'return'
con.c:30: error: expected declaration specifiers before '}' token
con.c:33: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
con.c:39: error: expected '{' at end of input
con.c: In function 'main':
con.c:39: error: expected declaration or statement at end of input

为什么我收到这些错误请告诉我? 谢谢 sudhanshu

3 个答案:

答案 0 :(得分:7)

你在这行末尾错过了一个分号:

void filecopy( FILE * a, FILE *b )

这应该是

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

因为这是一个函数原型。

此外,此行不合法C:

printf("no open".*argv);

这可能就像是

printf("no open");

希望这有帮助!

答案 1 :(得分:2)

声明需要以分号结尾

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

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

答案 2 :(得分:2)

您缺少分号。

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

<小时/> 这一行:

printf("no open".*argv);

没有任何意义。你的意思是什么?