c - 从两个文本文件 c 中排序

标签 c

我有两个排序序列,一个在 data1.text 中,另一个在 data2.txt 中,都包含 20 个排序数字。我需要创建代码 sort.c 从两个 txt 中读取数字,同时比较它们并在 sort.txt 中输出较小的一个,所以它是 kinnda 合并排序)

这是我的代码:

#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;
}

它显示段错误=(

最佳答案

你的 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");

关于c - 从两个文本文件 c 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439493/

相关文章:

c - C中的这个菜单我做错了什么

c - strtok 改变指针的值

Const 自引用结构

c - 在C中获取系统环境变量

c++ - 您如何以编程方式确定二进制输出中的构建系统等效性?

c++ - (n & m) <= m 总是正确的吗?

c - 使用 FILE 类型的结构时接收段错误 - C

计算 c 中用户输入的平均值

c - 二维数组从根到其他进程的 MPI 列循环分布

c - 读取一行、标记并分配给 C 中的结构体