сортировка C файлов по цифрам - PullRequest
0 голосов
/ 19 июня 2020

У меня есть несколько структур в моем файле, и мне нужно отсортировать их численно (например, мне нужно отсортировать идентификаторы студентов) Я написал это, но это не работает:

        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» для сортировки (я использую сортировку по выбору) , но это не работает, и я получаю ошибку времени выполнения ... что мне делать?

openning file part :

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

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

вот код: https://code.sololearn.com/c8Bh9vtao0C0/#cpp

1 Ответ

1 голос
/ 20 июня 2020

Привет, ребята, я нашел свой ответ ... Мне пришлось скопировать данные в массив структур и отсортировать массив, а затем переписать файл с отсортированным массивом структур.

...