繁体   English   中英

qsort反转字符串的顺序

[英]qsort reversing the order of string

我正在尝试使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM