2

这是我的代码

#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

为什么我收到这些错误请告诉我?谢谢苏丹舒

4

3 回答 3

7

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

void filecopy( FILE * a, FILE *b )

这应该是

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

因为这是一个函数原型。

此外,此行不合法 C:

printf("no open".*argv);

这可能应该是这样的

printf("no open");

希望这可以帮助!

于 2012-05-25T02:10:11.470 回答
2

声明需要以分号结尾

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

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

于 2012-05-25T02:11:11.840 回答
2

您缺少一个分号。

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


这一行:

printf("no open".*argv);

没有意义。你是什​​么意思?

于 2012-05-25T02:19:32.377 回答