我正在尝试对简化版本的二维字符串数组进行排序, (我不想将“nameArray”的数据类型更改为“char * nameArray [4]”)
setContentView
( 更新:更改为我直接使用值(4)而不是计算nElem。我的问题是让qsort工作。 )
答案 0 :(得分:1)
比较函数的参数只是指针,而不是指针的指针。
你也不需要转换我相信,因为参数是void *,你可以将它们分配给局部变量,编译器会处理它们。
试试这个:
int cstring_cmp(const void *a, const void *b)
{
const char *ia = a;
const char *ib = b;
return strcasecmp(ia, ib);
}
如果你不需要它们甚至可以去除局部变量(如果你计划在比较函数中添加更多代码,只需要它们):
int cstring_cmp(const void *a, const void *b)
{
return strcasecmp(a, b);
}
答案 1 :(得分:0)
$array = array(1,2,4,5,7,8,9);
function closest($array, $number) {
$array = array_flip($array);
if(array_key_exists($number, $array)) return $number;
$array[$number] = true;
sort($array);
$rendered = array_slice($array, $number, 2, true);
$rendered = array_keys($rendered);
if(array_key_exists(1, $rendered)) return $rendered[1];
return false;
}
print_r(closest($array, 3));