gpt4 book ai didi

c - 如何按名称对结构体的数组指针进行排序?

转载 作者:行者123 更新时间:2023-11-30 16:17:11 25 4
gpt4 key购买 nike

我试图按字段“名称”对结构进行排序,但它不起作用:/您能向我展示或解释我没有看到的问题吗?

struct clients {
int id;
char name[27];
};

int comparator(const void* p, const void* q){
return strcmp(((struct list_node*)p)->name,
((struct list_node*)q)->name);
}

void sort_by_name(struct list_node *node){

const int length = count_list(node);
struct list_node *arr[length];
int i=0;
while (node)
{
arr[i]=node;
node = node->next;
i++;
}

printf("Before sort:\n");
for (i = 0; i < length; i++) {
printf("Id = %d, Name = %s\n",
arr[i]->id, arr[i]->name);
}

qsort(arr, length, sizeof(struct list_node), comparator);

printf("After sort:\n");
for (i = 0; i < length; i++) {
printf("Id = %d, Name = %s\n",
arr[i]->id, arr[i]->name);
}

}

结果:

 Before sort:
Id = 11, Name = adam
Id = 20, Name = mati
Id = 25, Name = zenek
Id = 28, Name = mat

Process finished with exit code -1073741819 (0xC0000005).

我使用主菜单中的功能 - 用户必须决定打印排序或不排序列表

最佳答案

您的问题是:

qsort(arr, length, sizeof(struct list_node), comparator);

你告诉qsort数组有列表节点,但数组只有指针指向列表节点,所以:

qsort(arr, length, sizeof(struct list_node *), comparator);

关于c - 如何按名称对结构体的数组指针进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56322835/

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