如何解决需要帮助使用 qsort 从结构中排序数组
我正在学习使用 qsort,但似乎找不到使用 qsort 按字母顺序对“n”个人姓名进行排序的方法。
我尝试了很多方法,但大多数方法都给我相同的“表达式必须具有类类型”错误。
struct ppl {
char name[50];
};
ppl vpers[100];
void read_name(ppl* vpers,int n)
{
for (int i = 0; i < n; ++i) {
cout << "Name: ";
cin >> vpers[i].name;
}
}
void print_name(ppl * vpers,int n)
{
for (int i = 0; i < n; ++i) {
cout << vpers[i].name << endl;
}
}
int compare(const void* a,const void* b)
{
struct vpers* x = (struct vpers*)a.name;
const struct vpers* y = (struct vpers*)b.name;
if ((struct vpers*)x < (struct vpers*)y) return -1;
if ((vpers*)x == (vpers*)y) return 0;
if ((vpers*)x > (vpers*)y) return 1;
return(*(int*)a - *(int*)b);
}
int main()
{
int n;
cout << "Nr. ppl = ";
cin >> n;
ppl* vpers = new ppl[n];
read_name(vpers,n);
print_name(vpers,n);
qsort(vpers,n,sizeof(ppl),compare);
print_name(vpers,n);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。