использование qsort() для сортировки указателей на структуры, содержащие строки

Я не уверен, что это возможно сделать с помощью qsort, потому что то, что я хочу отсортировать (массив указателей на структуру), не является тем, что я сравниваю (строки

Вот сокращенная версия моей программы (предположим, что все данные о студентах находятся в ядре до того, как мы вызовем qsort(), а n — количество записей для сортировки):

struct student {
        char lname[NAMESIZE + 1];
        char fname[NAMESIZE + 1];
        short mid;
        short final;
        short hmwks;
};

int cmp(const void *, const void *);

int
main(int argc, char **argv)
{
        int n;
        struct student *data[MAX];

        qsort(data, n, sizeof(struct student *), cmp);

        return 0;
}

int
cmp(const void *p0, const void *p1)
{
        return strcmp((*(struct student *) p0).lname,
                      (*(struct student *) p1).lname);
}
5
задан Derek 4 May 2012 в 05:27
поделиться