gpt4 book ai didi

c - 在C中对结构数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:24 25 4
gpt4 key购买 nike

我有一个结构数组,我希望按升序对其进行排序。

在对 Stack Overflow 进行大量研究后,我找到了 sorting members of structure array .

因此我有以下代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct StockItem {
int unitPrice;
// ...
} stockItem;

int comparePrice(const void* a, const void* b)
{
stockItem *stockItem1 = (stockItem *) a;
stockItem *stockItem2 = (stockItem *) b;
return stockItem1->unitPrice - stockItem2->unitPrice;
}

int main() {
stockItem stockItem1;
stockItem1.unitPrice = 15;

stockItem stockItem2;
stockItem2.unitPrice = 41;

stockItem stockItem3;
stockItem3.unitPrice = 25;

stockItem stockItems[3] = {stockItem1, stockItem2, stockItem3};
int size = 3;

qsort(stockItems, (size_t) size, sizeof(int), comparePrice);

printf("\n");
for (int i = 0; i < size; i++) {
printf("%d\n", stockItems[i].unitPrice);
}

return 0;
}

但是,这似乎无法对数组进行排序。

最佳答案

这很奇怪。我唯一能看到的是您应该使用 sizeof(stockItem),而不是 int,但这无关紧要,除非您的系统有奇怪的对齐方式。此外,不需要强制转换为 size_t 大小,但这绝对无关紧要。

编辑:我试图添加一个链接到在线工作的代码,但它是错误的链接。基本上,除非使用打包,否则无法保证结构对齐。

关于c - 在C中对结构数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com