qort 函数未在 C 中正确排序结构数组

问题描述 投票:0回答:0

我尝试使用 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);
c pointers struct qsort
© www.soinside.com 2019 - 2024. All rights reserved.