Возникли проблемы с этим. Я много читал в qsort в прошлый день, и я ДУМАЮ, что у меня есть приличное понимание, но я борюсь с ним, когда использую его в сочетании с файлом (bin или text). Это заставляет меня полагать, что проблема может заключаться не в сравнении int или qsorting, а в фактическом процессе открытия и закрытия файла или самого самого fread. Это МОЖНО быть массивом «Заказ» является виновником. Я пробовал различные итерации кода, приведенного ниже, без везения.Qsorting из файла bin, ничего не отображающий
Моя цель - просто использовать qsort, чтобы привести прибывающие аэропорты в порядок. Мне также нужно преобразовать метку времени, чтобы она была понята для человека, и я не понимаю, как это сделать, но я решил, что мне нужно, чтобы мой массив работал, прежде чем я даже потрудился.
Если кому-то интересно, то файл бен вопрос был загружен в http://www.filedropper.com/acars_1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct MyStruct_struct{
char FlightNum[7];
char OriginAirportCode[5];
char DestAirportCode[5];
unsigned timeStamp;
} MyStruct;
MyStruct Order[5000];
int compare (const void *v1, const void *v2)
{
int result;
const MyStruct *ia = (MyStruct *)v1;
const MyStruct *ib = (MyStruct *)v2;
if ((result= strcmp(ia-> OriginAirportCode, ib-> OriginAirportCode)) != 0)
return result;
if ((result = strcmp(ia->DestAirportCode, ib->DestAirportCode)) != 0)
return result;
else return 0;
}
int main(){
int i;
FILE * bin;
MyStruct myStruct;
bin = fopen("acars.bin", "rb");
while(!feof(bin))
{
fread(&myStruct,sizeof(MyStruct),1,bin);
qsort(Order, 5000, sizeof(MyStruct), compare);
}
for (i = 0; i < 300; i++) {
printf("%i) %s, %s, %s\n", i, Order[i].FlightNum, Order[i].OriginAirportCode, Order[i].DestAirportCode);
}
fclose(bin);
return 0;
}
}
Вы должны разработать новую функциональность * в изоляции *, как можно больше. Вы пытаетесь 1) обрабатывать эту структуру, сравнивать и переупорядочивать ее экземпляры, 2) читать данные из файла и 3) выполнять quicksort. Какой из них не удается? Можете ли вы читать и записывать файлы с ints? Можете ли вы сравнить Mystructs? (Плохое имя, кстати.) Можете ли вы сортировать ints? Вы можете сравнить два аэропорта? Можете ли вы их прочитать и написать? Можете ли вы отсортировать их в виде жесткого кода? * Ограничьте проблему. * – Beta
http://imgur.com/JiRRiGs Я могу читать и, по-видимому, писать просто отлично, как показано здесь. Это не цикл. Это имеет какое-то отношение к массиву, который я создал, или к int. –
Это хороший первый шаг. Теперь попробуйте прочитать две из этих вещей в «Mysctruct [2]», а затем распечатать их. Или попробуйте жестко кодировать два из них и сравнить их. (Я не буду пытаться, потому что использование filedropper, похоже, требует больше работы, чем мне хочется, - вы должны рассмотреть возможность публикации функции, которая генерирует небольшой файл аэропортов.) – Beta