У меня есть структуры в C так:Сортировка Структуры в С QSort
typedef struct proces {
char ime[60];
char pid[60];
char ppid[60];
char stanje;
int stdat;
char niti[60];
char poraba[60];
} proces ;
я создаю около 100 из них и поместить их в массив
proces** procesi = malloc(sizeof(proces));
int x;
for(x=0; x<st; x++){
procesi[x] = (struct proces*)malloc(sizeof(proces));
}
Теперь я хотел бы разобраться их с qsort. Но qsort не подходит. функция выглядит следующим образом:
int compar_ppid(const void *v1, const void *v2){
const proces *p1 = (proces*)v1;
const proces *p2 = (proces*)v2;
return(strcmp(p1->ppid, p2->ppid));
}
Я проверил значения, что compar_ppid сравниваемые и они, кажется, что-то вроде #d, когда они должны быть числами.
Я думаю, что я обращаюсь к указателю, а не к значению, но я не могу понять, что нужно изменить, чтобы получить правильные значения.
QSort вызов:
qsort(procesi, st, sizeof(proces*), compar_name);
'proces ** procesi = malloc (sizeof (proces));' ---> 'proces ** procesi = malloc (st * sizeof (proces *));' – BLUEPIXY