C编译错误 - “fgetc& fputc参数太少”

时间:2014-02-27 18:33:15

标签: c compilation fgetc

我是C的新手并且很难理解为什么这不会编译。脚本应该将两个文本文件作为args - 读取第一个文件并将内容复制到第二个文件。我在编译时遇到以下错误:

root@debian:/home/kevin# gcc -Wall mycat.c -o mycat
mycat.c: In function ‘main’:
mycat.c:4:3: error: too few arguments to function ‘fgetc’
In file included from mycat.c:1:0:
/usr/include/stdio.h:533:12: note: declared here
mycat.c:5:5: error: too few arguments to function ‘fputc’

我不确定为什么说fgetc应该采取更多的论据,因为它在我的演讲幻灯片中显示了一个参数?

#include <stdio.h>
#include <stdlib.h>
int main(){
const char∗ ifilename = $1;
FILE∗ istream = fopen(ifilename, ”r”);
if (istream == NULL) {
fprintf(stderr, ”Cannot open %s \n”,ifilename);
exit(1);
}
const char∗ ofilename = ”$2”;
FILE∗ ostream = fopen(ofilename, ”w”);
if (ostream == NULL) {
fprintf(stderr, ”Cannot open %s \n” , ofilename);
exit(1);
}
int = c;
while ((c = fgetc(istream)) != EOF)
fputc(ostream);
return 0;
}

1 个答案:

答案 0 :(得分:3)

我很无聊所以我从头开始编码。现在测试它,它的工作原理。也许你可以从我的代码中得到你的错误(毕竟我使用的算法与你的相同)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
    FILE* filesrc = NULL;
    FILE* filedest = NULL;
    int c = 0;

    if(argc != 3){
        fprintf(stderr,"Usage: programname sourcefile destinationfile");
        return EXIT_FAILURE;
    }

    if((filesrc = fopen(argv[1],"r")) == NULL){
        fprintf(stderr,"Cannot open sourcefile!");
        return EXIT_FAILURE;
    }
    if((filedest = fopen(argv[2],"w")) == NULL){
        fprintf(stderr,"Cannot open destinationfile!");
        return EXIT_FAILURE;
    }

    while ((c = fgetc(filesrc)) != EOF)
        fputc(c,filedest);

    return EXIT_SUCCESS;
}

在控制台中调用程序类型:./programname sourcefilename destinationfilename 你的主要错误是你的参数处理,或者它是一个我从未听说过的全新的c特性;)参数作为字符串数组(char指针)传递给main()函数argv [0] =程序名称|| argv [1] =第一个参数|| argv [2] =第二个参数等... 正如已经提到的:你忘记了fgetc()的第一个参数(你的变量'c')