我有这个结构。需要帮助使用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循环 –