gpt4 book ai didi

c - 未调用 qsort 比较函数?

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

所以我使用 qsort 根据我称为“键”的结构中的 int 值对结构数组进行排序。但是,尽管我的数组已正确填充,但它似乎并未对我的结构进行排序...

qsort 似乎从未调用我的比较函数。函数内打印输出语句的简单测试表明了这一点。我的“测试”从未出现。

比较函数:

int compare (const void *a, const void *b){
struct Record* a_r = (struct Record*)(a);
struct Record* b_r = (struct Record*)(b);

/*test*/
printf("test");

return (a_r->key - b_r->key);
}

我的 qsort 调用:

    qsort(arr, (sizeof(arr)/sizeof(struct Record)), sizeof(struct Record), compare);

我的比较函数有问题吗?还是我没有传递正确的变量?

我的数组声明:

struct Record *arr = malloc(size->st_size); //where st_size is stat() of input file

最佳答案

sizeof(arr) 是指针的大小,因为 arr 是在 struct Record * 中定义的。除以一个 struct Record 的大小,这很可能是 0。

假设您的文件只包含记录,而您正在读取整个文件,请使用 size->st_size/sizeof(struct Record)。或者甚至更好,因为您可能无论如何都需要其他地方的记录数,所以在读取输入文件后设置一个变量并使用该变量。

关于c - 未调用 qsort 比较函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21649970/

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