【发布时间】:2021-02-25 00:50:13
【问题描述】:
enum rarity
{
common,
uncommon,
rare,
mythic
};
struct card
{
unsigned int id;
char* name;
char* cost;
unsigned int converted_cost;
char* type;
char* text;
char* stats;
enum rarity rarity;
} card_t ;
我的卡片结构中有 4 个条目。例如, card[0]->name = "被妖精偷走", card[1]->name = "永恒隔离", card[2]->name = "尸骑士", card[3]->name = "欧佐夫执行者"。
qsort(cards, cardsaccum , sizeof(char), cmpname);
在我的 qsort() 中,我认为我输入了正确的参数。我的 cardaccum = 4, sizeof(char) 已设置,因为我正在检查名称的大小,然后调用 cmpname 按顺序对名称进行排序。
int cmpname (const void *pa, const void *pb) {
const card_t *p1 = pa;
const card_t *p2 = pb;
return strcmp(p1->name, p2->name);}
在 qsort() 之后,我的排序条目只是读取的最后一个条目,即 Orzhov Enforcer。
我不明白为什么会发生这种情况,想知道是否有人可以帮助解释为什么会发生这种情况。下面是我的一些代码,以便更好地遵循我正在做的事情。
【问题讨论】:
-
我不会阅读所有代码。它不可能都是相关的。相反,请向我们解释您为什么将
sizeof(char)传递给qsort。你的逻辑是什么?