gpt4 book ai didi

c - qsort在c中动态创建数组

转载 作者:行者123 更新时间:2023-12-02 07:39:27 26 4
gpt4 key购买 nike

嘿伙计们(请注意,这个问题让我感觉 n00b,所以我可能是),

我能够动态创建数组,并且能够有效地对静态创建的数组使用 qsort,但在动态创建的数组上使用 qsort 时遇到问题。我想我在使用指针时遇到了麻烦。

struct my_struct {
FILE *fp;
int i;
};

所以数组包含上述结构,我想按 int 值对它进行排序。

静态地,我可以做这样的事情:

struct my_struct array[4];

然后排序:

qsort((void *) &array, sizeof(array) / sizeof(struct my_struct), sizeof(struct my_struct), *compare);

--

如果我这样创建数组:

struct my_struct* = malloc(sizeof(struct process) * 4);

一切都会编译和运行,但是执行永远不会进入比较函数。

任何帮助将不胜感激

最佳答案

sizeof(array) 是 (sizeof(struct my_struct) * array_size) 对于常量数组,但它只是动态数组的指针大小。您必须自己计算实际大小(传递给 malloc 的大小)并将其放入 qsort 调用中。

关于c - qsort在c中动态创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633768/

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