Qsort字符串数组按降序排列

时间:2013-11-27 19:59:06

标签: c sorting arrays

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

int cmp(const void *p, const void *q) {
     char* const *pp = p;
     char* const *qq = q;
     return strcmp(*pp, *qq);
}

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

qsort(a, sizeof(a)(sizeof(a[0]), sizeof(a[0]), cmp);

你如何按降序排序?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

只需返回否定结果(-strcmp(*pp, *qq))。