我想通过qsort排序名称数组。qsort不工作c程序
这是我的代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int myCompare (const void * a, const void * b) {
return *(char*)a - *(char*)b;
}
int main(void) {
int i;
char fileArr[] = {"inputbv", "inputa","inputzef",};
int stringLen = sizeof(fileArr)/sizeof(char *);
qsort(fileArr, stringLen, sizeof(char *), myCompare);
for (i=0; i<stringLen; ++i)
printf("%d: %s\n", i, fileArr[i]);
}
此代码不会在最后打印出任何东西。它只是结束,因此它看起来像它删除字符数组
打开警告。这个代码中有两个*直接*表示根本问题。 – WhozCraig
在比较函数中需要'strcmp'。比较这些指针最多可以使它们反转或保持不变。 –
'int myCompare(const void * a,const void * b)'接收数组元素的地址。数组元素[应该是](http://stackoverflow.com/a/43215634/2410359)'char *',所以'myCompare()'中的'a'应该转换为'char **'。 – chux