假设我有一个指针指针char数组,如下所示:
2-abc
5.5-aaa
10-acdc
3-(the text here doesn't matter)
我需要按照每个字符串中的数字按升序对数组进行排序。我知道这个数字以"-"
结尾。数字也可以有小数点,并且在<0;INT_MAX>
范围内。有什么想法吗?
答案 0 :(得分:2)
将qsort
与使用strtod
的比较函数一起使用,将字符串的初始部分转换为double
值。请注意返回整数<0
,==0
或>0
,具体取决于转换后的值是a<b
,a==b
还是a>b
。
您需要在此作业中加入一些工作,但它应该适合单页代码。
假设数组是一个指向字符串的指针数组,这里有一个比较函数:
#include <stdlib.h>
int mycmp(const void *a, const void *b) {
double aa = strtod(*(const char **)a, NULL);
double bb = strtod(*(const char **)b, NULL);
return (bb < aa) - (aa < bb);
}