undo qsort命令用来返回原始数据

Der*_*ien 1 c arrays sorting

qsort()在我的程序中使用对数组进行排序,以便我可以bsearch()用来查找某个元素.

我有qsort()正确的数组工作,因为我的数组在排序时没有满,它返回类似于此

在排序之前 a[0] = value, a[1] = value, a[2] = NULL, a[3] = NULL,

排序后 a[0] = NULL, a[1] = NULL, a[2] = value, a[3] = value,

有没有办法在排序之前撤消排序以恢复?

这是qsort()代码

`qsort(a,size_a,sizeof(*value),(int(*)(const void*,const void*)) strcmp);`
Run Code Online (Sandbox Code Playgroud)

用于比较我刚刚使用strcmp的值,因为所有值都是字符串.

Oli*_*rth 7

不会.有多个原始数组会排序到同一个输出数组.你怎么知道选择哪一个?

如果你想要原版,那么你需要制作一份副本,然后进行排序.(或者,创建一个指向原始元素的指针数组,然后对其进行排序.)