Qsort() для сортировки структур по дате (struct tm) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Стоит задача отсортировать массив структур timetable, одно из поле которой - вложенная стандартная структура struct tm. Для сортировки через qsort нужно написать функцию сравнения. Написал такую:
int comp(const void *a, const void *b)
{
    struct timetable tt1, tt2;
    tt1 = *((struct timetable*)a);
    tt2 = *((struct timetable*)b);
    time_t t1 = mktime(&(tt1.date));
    time_t t2 = mktime(&(tt2.date));
    double diffSecs = difftime(t1, t2);
    if (!diffSecs) return 0;
    if (diffSecs<0) return -1;
    if (diffSecs>0) return  1;
}
, но массив не сортируется (хотя его порядок изменяется). Вопрос: как правильно написать функцию сравнения для такой сортировки?

Решение задачи: «Qsort() для сортировки структур по дате (struct tm)»

textual
Листинг программы
int cmp(const void* a, const void* b) {
    return mktime(&((struct timetable*)b)->date) - mktime(&((struct timetable*)a)->date);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы