Qsort字符串数组按降序排列

use*_*151 1 c arrays sorting

要按升序对字符串数组进行排序,我使用:

int cmp(const void *p, const void *q) {
     char* const *pp = p;
     char* const *qq = q;
     return strcmp(*pp, *qq);
}
Run Code Online (Sandbox Code Playgroud)

然后将这样实现为qsort,如下所示:

qsort(a, sizeof(a)(sizeof(a[0]), sizeof(a[0]), cmp);
Run Code Online (Sandbox Code Playgroud)

你如何按降序排序?

小智 5

一种快速简便的方法是strcmp()在返回之前将结果乘以-1.

int cmp(const void *p, const void *q) {
     char* const *pp = p;
     char* const *qq = q;
     return -strcmp(*pp, *qq);
}
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到Stack Overflow.`-1*strcmp(...)`是一种编写`-strcmp(...)`的冗长方式.另一种选择是`strcmp(*qq,*pp)`,颠倒了参数的顺序. (2认同)