用qsort对字符串数组排序的一些问题
我想利用qsort对字符串数组进行排序,代码如下:但是执行出错,请问正确的写法应该是怎么样的呢?
程序代码:
int cmp(const void *ch1, const void *ch2)
{
return strcmp(*(char **)ch1, *(char **)ch2);
}
int main()
{
int num;
//手动输入有多少个字符串
scanf("%d", &num);
char str[num][100];
//循环录入字符串
for(int i=0; i<num; i++)
{
scanf("%s", str[i]);
}
//排序
qsort(str, num, sizeof(char *), cmp);
//打印
for(int i=0; i<num; i++)
printf("%s ", str[i]);
return 0;
}









。另外我想请教一下,为什么cmp函数里的要强制转换为(char *)a,而不是*(char **)a?