使用命令行参数在c中复制数据3中的两个数据文件时出错

问题描述 投票:0回答:1

enter image description here

#include<stdio.h>
#include<stdlib.h>
void mergeFiles(FILE *file1, FILE *file2, FILE *file3)
{
    int num;
    while(fscanf(file1,"%d",&num)!=EOF)
    {
        fprintf(file3,"%d\n",&num);
    }
    while(fscanf(file2,"%d",&num)!=EOF)
    {
        fprintf(file3,"%d",&num);
    }
}
int main(int argc, char *argv[]){
    if(argc!=4) {
        printf("Usage : %s<data1><data2><data>\n",argv[0]);
        return 1;
    }
    FILE *file1=fopen(argv[1],"r");
    FILE *file2=fopen(argv[2],"r");
    FILE *file3=fopen(argv[3],"w");
    if(file1==NULL || file2==NULL || file3==NULL){
        fprintf("Error Opening files\n");
        return 1;
    }
    merge files(file1,file2,file3);
    printf("Merged content written to %s\n",argv[3]);
    fclose(file1);
    fclose(file2);
    fclose(file3);
    return 0;
    
}

这段代码有什么错误?
使用命令行参数在c中复制数据3中的两个数据文件时出错

  1. 以读取模式打开file1.txt和file2.txt。
  2. 以写入模式打开file3.txt。
  3. 循环将file1.txt的字符一一复制到file3.txt。
  4. 循环将file2.txt的字符一一复制到file3.txt。
  5. 关闭所有文件。
c file copy fopen eof
1个回答
0
投票

我认为您遇到的主要问题有以下几个:

  1. 在 mergeFiles 函数中,您将局部变量“num”的地址传递给 fprintf,而不是调用 fscanf 后它包含的值(这需要“&num”,因为 fscanf 扫描文件,解码数字并将其存储到相应的变量中作为指针传递)。 fprintf 需要将值存储到变量中,因此更改“num”中的“&num”,然后重试。
  2. 在主函数中,当您调用 mergeFiles 时,请务必编写“mergeFiles”而不是“merge files”,因为第二个不是函数名称(可能是拼写错误)。
  3. 编译器得到的错误是由于缺少文件指针引起的,fprintf 需要知道在哪里写入,然后用 'fprintf(stderr, "error: ...")' 更改该行。
© www.soinside.com 2019 - 2024. All rights reserved.