【发布时间】:2013-05-05 10:15:37
【问题描述】:
我在 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 调用:
qsort(procesi, st, sizeof(proces*), compar_name);
【问题讨论】:
-
proces** procesi = malloc(sizeof(proces));--->proces** procesi = malloc(st*sizeof(proces*));