我正在尝试使用 qsort
按字母顺序对字符串进行排序。目前它似乎只是颠倒了我的字符串的顺序。
printf("unsorted %s\n", string);
qsort(string, strlen(string), sizeof(char), compare);
printf("sorted %s\n", string);
string 是字符串“ACBD”。第二个 printf 将其显示为“DBCA”。我的比较函数是,
compare(const void *a1, const void *b1){
const int *a2 = a1;
const int *b2 = b1;
if(*a2 == *b2){
return 0;
}
else{
if(*a2 < *b2){
return -1;
}
else{
return 1;
}
}
}
我确定我正在做一些非常愚蠢的事情,但我们将不胜感激。
编辑:字符串声明为 char string[1000]
最佳答案
您想进行字符比较,但实际上是在进行整数比较 (sizeof int > sizeof char)。
修复如下:
char *a2 = a1;
char *b2 = b1;
关于c - qsort 反转字符串的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224979/