我有這個結構。需要幫助使用qsort對C中的結構數組進行排序
struct Transport
{
int id;
float Price;
};
在這裏,我讀取數據和結構數組。
void read (struct Transport **Car, int *m)
{
int i;
printf("Insert total number of cars: ");
scanf("%d",m);
*Car=(struct Transport*) malloc ((*m)*3*sizeof(struct Transport));
for(i=1; i<=*m; i++)
{
(*Car)[i].id=i;
printf("Price: ");
scanf("%f",&(*Car)[i].Price);
printf("\n");
}
}
這裏是顯示功能。
void display(struct Transport *Car,int m)
{
int i;
for(i=1; i<=m; i++)
{
printf("Entry #%d: \n",i);
printf("Price: %2.2f\n",(Car+i)->Price);
printf("\n");
}
}
現在是問題所在。我必須按價格字段排序數據。到目前爲止,我已經嘗試過,但它什麼都不做。
int struct_cmp_by_price(const void *a, const void *b)
{
struct Transport *ia = (struct Transport *)a;
struct Transport *ib = (struct Transport *)b;
return (int)(100.f*ia->Price - 100.f*ib->Price);
}
這是主要的樣子。
int main()
{
int m;
struct Transport *Car;
read(&Car,&m);
qsort(Car, m, sizeof(struct Transport), struct_cmp_by_price);
display(Car,m);
return 0;
}
任何人都可以幫我嗎?
'的qsort(汽車,' - >'的qsort(車載+ 1,'或'爲(I = 1;我<=*m' -->'爲(ⅰ= 0; i <* m' – BLUEPIXY
數組索引從0開始在C中 –
對Car + 1進行排序並不能修復數組添加結束時更改for循環 –