hej. Chciałabym przesortować studentów według lat. mógłby mi ktoś wytłumaczyć dlaczego bad_stb_cmp() nie chce działać? co qsort
przekazuje do tej funkcji porównującej jeżeli nie students[i]
(inaczej *(students+i)
? nie chce już nawet mówić, że straciłam nad tym z 10x czasu niż jakbym ręcznie napisała funkcje do sortowania a wskaźniki w takich przypadkach...(>_<)
moi znajomi mówią, że mnie poo***ało, że wybrałam ten kierunek i to jest prawda w takich przypadkach.
typedef struct {
unsigned age;
char *name;
} student_t;
typedef struct {
student_t **students;
unsigned nalloc_elems;
unsigned nof_elems;
} stbase_t;
static int stb_cmp(const void *a, const void *b) {
student_t *aa = *(student_t**)a;
student_t *bb = *(student_t**)b;
return (aa->age - bb->age);
}
static int bad_stb_cmp(const void *a, const void *b) {
student_t *aa = (student_t*)a;
student_t *bb = (student_t*)b;
return (aa->age - bb->age);
}
int main(void) {
qsort(stb->students,stb->nof_elems,sizeof(student_t*),stb_cmp); /* sortuje */
qsort(stb->students,stb->nof_elems,sizeof(student_t*),bad_stb_cmp); /* nie chce sortowac */
return 0;
}