После поиска во многих сообщениях я не могу решить свою проблему. Я хочу заказать массив структур в зависимости от одного поля (крайний срок):
typedef struct{
int ident;
int computation;
int period;
int deadline;
}task_t;
task_t *tasks;
int compare(const void *a, const void *b) {
task_t *ia = *(task_t**)a;
task_t *ib = *(task_t**)b;
//task_t *ia = (task_t *)a;
//task_t *ib = (task_t *)b;
return (ia->deadline - ib->deadline);
}
//Randomly generation of parameters of tasks
fprintf(stderr,"before:\n");
for (i=0;i<nT;i++){
fprintf(stderr,"%d;%d;%d;%d\n", tasks[i].ident, tasks[i].computation, tasks[i].deadline,tasks[i].period);
}
size_t size = sizeof(tasks) / sizeof(task_t*);
qsort(tasks, size, sizeof(task_t *), compare);
fprintf(stderr,"\after:\n");
for (i=0;i<nT;i++){
fprintf(stderr,"%d;%d;%d;%d\n", tasks[i].ident, tasks[i].computation, tasks[i].deadline,tasks[i].period);
}
До и после qsort результат одинаков. Я думаю, что проблема в указателе, но я не знаю, как ее решить. Я перепробовал множество комбинаций qsort (& tasks, size, sizeof (task_t *) и сравнивать); а также внутри функции сравнения, но результат не меняется. Не могли бы вы помочь мне? Извините, если вопрос так много повторяется.