我尝试使用 qsort() 函数对结构数组进行排序。它对我的数组进行排序,但不是我想要的方式。我想按价格对我的数组进行排序,但它按数字排序。我想问题是我使用指针的方式。我不能改变结构的结构。
#define NAME_LEN 25
#define MAX_PARTS 100
struct part {
int number;
char name[NAME_LEN + 1];
float price;
int on_hand;
} inventory[MAX_PARTS];
比较功能:
int compare_parts(const void* p, const void* q) {
const struct part* part1 = p;
const struct part* part2 = q;
if (part1->price < part2->price) {
return -1;
} else if (part1->price == part2->price) {
return 0;
} else {
return 1;
}
}
调用函数:
qsort(inventory, num_parts, sizeof(struct part), compare_parts);