【发布时间】:2018-04-29 08:48:39
【问题描述】:
我正在尝试对一组无符号长整数进行排序。但是,由于某种原因,qsort 正在用零填充整个数组,而不是对其进行排序。我将展示我对函数、比较器和 GDB 的调用。
这张图显示了 qsort 前后的数组,以及我对函数的调用。
来电:
qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator);
这是我的比较器函数,称为比较器:
int comparator(const void *p, const void *q)
{
if( *((unsigned long *)p) < *((unsigned long *)q)){
return -1;
}
else if( *((unsigned long *)p) == *((unsigned long *)q)){
return 0;
}
else{
return 1;
}
}
这是什么原因造成的,我该怎么办?
【问题讨论】:
-
请不要发布代码图片,而是将实际代码作为文本发布。图片不允许帖子出现在搜索中。另外,请确保它是正确的minimal reproducible example,而不仅仅是可能无法重现问题的零碎。
-
我也严重怀疑你这是一个 C 和 C++ 的问题。您肯定只是作为其中之一进行编译。
-
除非
scores[c]是char或unsigned的数组,否则sizeof scores[c]不会给出要排序的元素数。为什么你使用scores[c]作为第一个参数而不是scores??