我想通過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