我有一個像這樣在C結構:用C排序結構與快速排序
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(procesi, st, sizeof(proces*), compar_name);
'proces ** procesi = malloc(sizeof(proces));'--->'proces ** procesi = malloc(st * sizeof(proces *));' – BLUEPIXY 2013-05-05 10:21:22