Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C qsort用零填充数组?_C_Sorting_Qsort - Fatal编程技术网

C qsort用零填充数组?

C qsort用零填充数组?,c,sorting,qsort,C,Sorting,Qsort,我正在尝试对一个无符号长数组进行排序。然而,出于某种原因,qsort用零填充整个数组,而不是对其进行排序。我将显示对函数、比较器和GDB的调用 此图显示了qsort前后的数组,以及我对该函数的调用 这是电话: qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator); 这是我的比较器函数,名为comparator: int comparator(const void *p, const void *q) {

我正在尝试对一个无符号长数组进行排序。然而,出于某种原因,qsort用零填充整个数组,而不是对其进行排序。我将显示对函数、比较器和GDB的调用

此图显示了qsort前后的数组,以及我对该函数的调用

这是电话:

qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator);
这是我的比较器函数,名为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;
      }
}
int比较器(const void*p,const void*q)
{
如果(*(无符号长*)p)<*((无符号长*)q)){
返回-1;
}
else如果(*(无符号长*)p)==*((无符号长*)q)){
返回0;
}
否则{
返回1;
}
}
这是什么原因造成的?我能做些什么?

参数
sizeof(scores[c])
给出了以字节为单位的大小,而不是要排序的元素数


您可能会得到很多超出范围的访问,而这些访问恰好拾取了零。

请不要发布代码的图片,而是将实际代码作为文本发布。图像不允许帖子出现在搜索中。另外,确保它是一个适当的,而不是只是一些碎片和可能不会重现的问题。我也严重怀疑你这是一个C和C++问题。除非
scores[c]
char
unsigned
的数组,否则
sizeof scores[c]
不会给出要排序的元素数。您为什么要使用
分数[c]
作为第一个参数,而不是
分数
?非常感谢!我以为qsort计算了总数组大小和元素大小,结果是计算了元素计数和元素大小。