【发布时间】:2017-04-04 19:04:03
【问题描述】:
我正在尝试通过 qsort 对一组名称进行排序。
这是我的代码
#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]);
}
此代码最后不打印任何内容。它刚刚结束,所以它似乎删除了 char 数组中的条目
【问题讨论】:
-
打开你的警告。这段代码发出了两个直接指示根本问题的代码。
-
比较功能需要
strcmp。比较指针最多只能颠倒它们或保持它们不变。 -
int myCompare (const void * a, const void * b )接收数组元素的地址。数组元素should bechar *,所以myCompare()中的a应该转换为char **。