gpt4 book ai didi

c - 使用 qsort() 对指向包含字符串的结构的指针进行排序

转载 作者:太空狗 更新时间:2023-10-29 15:24:48 24 4
gpt4 key购买 nike

我不确定这是否可以用 qsort 来做,因为我想要排序的(指向结构的指针数组)不是我要比较的(字符串)。

这是我的程序的一个简化版本(假设在我们调用 qsort() 之前所有学生数据都在核心中,n 是要排序的记录数):

struct student {
char lname[NAMESIZE + 1];
char fname[NAMESIZE + 1];
short mid;
short final;
short hmwks;
};

int cmp(const void *, const void *);

int
main(int argc, char **argv)
{
int n;
struct student *data[MAX];

qsort(data, n, sizeof(struct student *), cmp);

return 0;
}

int
cmp(const void *p0, const void *p1)
{
return strcmp((*(struct student *) p0).lname,
(*(struct student *) p1).lname);
}

最佳答案

将传递给 cmp() 的是 struct student** 参数(以 void* 的形式)。所以像这样改变 cmp():

int
cmp(const void *p0, const void *p1)
{
struct student* ps0 = *(struct student**) p0;
struct student* ps1 = *(struct student**) p1;

return strcmp( ps0->lname, ps1->lname);
}

关于c - 使用 qsort() 对指向包含字符串的结构的指针进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10443132/

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