0

data1.text に 2 つの並べ替えられたシーケンスがあり、data2.txt にもう 1 つ、両方に 20 のソート番号が含まれています。両方の txt から数値を読み取り、同時にそれらを比較して、小さい方を sort.txt に出力するコード sort.c を作成する必要があるため、並べ替えをマージするようなものです)

それは私のコードです:

#include <stdio.h>
int main(int argc,char *argv1[],char *argv2[],char *argv3[])
    {

        char *f1 = argv1[1];// taking filename1 from args
        char *f2 = argv2[1];// taking filename2 from args
        char *f3 = argv3[1];// taking filename2 from args
        FILE *fp1,*fp2,*fp3;

        fp1 = fopen(f1,"r");
        fp2 = fopen(f2,"r");
        fp3 = fopen(f2,"w");// sort.txt file so 'w'
        int num1,num2;
        fscanf (fp1, "%d", &num1);
        fscanf (fp2, "%d", &num2);
        while (!feof(fp1) && !feof(fp2)) {
        if (num1<num2)
            {
                fprintf(fp3,"%d\t",num1);// print num 1
                fscanf (fp1, "%d", &num1);  // read num1
            }
            else{
                fprintf(fp3,"%d\t",num2);
                fscanf (fp2, "%d", &num2);  // read num2
            }
        }

         if (!feof(fp1))
         {
            while (!feof(fp1))
            {
                fprintf(fp3,"%d\t",num1);// print num 1
                fscanf (fp1, "%d", &num1);  // read num1
            }
         }
            else
            {

                while (!feof(fp2))
                {
                    fprintf(fp3,"%d\t",num2);
                    fscanf (fp2, "%d", &num2);  // read num2
                }
            }


        fclose(fp1);// closing file f1
        fclose(fp2);// closing file f2
        fclose(fp3);// closing file f2

        return 0;
}

セグメンテーション違反を示しています =(

4

1 に答える 1

3

あなたmainは間違っています。する必要がありますint main(int argc, char **argv)。次に、代わりに

    char *f1 = argv1[1];// taking filename1 from args
    char *f2 = argv2[1];// taking filename2 from args
    char *f3 = argv3[1];// taking filename2 from args

何かのようなもの

    char *f1 = argv[1];// taking filename1 from args
    char *f2 = argv[2];// taking filename2 from args
    char *f3 = argv[3];// taking filename2 from args

ただし、これらの行の前にargc、正しい数の引数を確認する必要があります。おそらく、fp3 = fopen(f3,"w");代わりにfp3 = fopen(f2,"w");.

于 2013-10-18T00:23:21.800 に答える