对C文件进行数字排序

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

我的文件中有一些结构,我必须对它们进行数字排序(例如,我必须对学生的ID进行排序),我写了这个,但它不工作。

        int i = 0;
        fseek(fileKALAJADIDptr, 0, SEEK_SET);
        while (fread(&KJadid, sizeof(struct KalaJadid), 1, fileKALAJADIDptr))
        {
            int j = i + 1;
            fseek(fileKALAJADIDptr2, j * sizeof(struct KalaJadid), SEEK_SET);
            while (fread(&KJadid2, sizeof(struct KalaJadid), 1, fileKALAJADIDptr2))
            {
                if (KJadid.Tedad > KJadid2.Tedad)
                {
                    struct KalaJadid swap = KJadid;
                    KJadid = KJadid2;
                    KJadid2 = swap;

                    fwrite(&KJadid2, sizeof(struct KalaJadid), 1, fileKALAJADIDptr2);
                    fseek(fileKALAJADIDptr, i * sizeof(struct KalaJadid), SEEK_SET);
                    fwrite(&KJadid, sizeof(struct KalaJadid), 1, fileKALAJADIDptr);
                }
                j++;
            }
            i++;
        }

        fclose(fileKALAJADIDptr);
        fclose(fileKALAJADIDptr2);

首先我用fseek指向文件的开头,然后用 "while "进行排序(我使用select sort)。但它不工作,我得到运行时的错误...我应该做什么?

openning file part :

FILE* fileKALAJADIDptr = fopen(fileKALAJADID, "r+b");
FILE* fileKALAJADIDptr2 = fopen(fileKALAJADID, "r+b");

if (fileKALAJADIDptr == NULL)
{
    fopen(fileKALAJADID, "w+");
}

这里是代码。https: /code.sololearn.comc8Bh9vtao0C0#cpp

c file structure selection-sort
1
投票

嘿,伙计们,我找到了我的答案。我必须复制一个结构数组中的数据,并对数组进行排序,然后用排序后的结构数组重写文件。

© www.soinside.com 2019 - 2024. All rights reserved.