一、
简单应用例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
/*
* 字符串比较函数,传送过来的是指向字符串指针的指针
*/
static int
cmpstringp(const void *p1, const void *p2)
{
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
/*
* 整数的比较函数,传送过来的参数是整数的指针
*/
static int
comintp(const void *ip1, const void *ip2)
{
return *(int *)ip1 - *(int *)ip2;
}
/*
* 其他结构的参数也差不多,先通过指针求得
* 比较的对象,然后在进行比较,假设有一个student 结构,
* 按该结构的成员id值来排序,比较函数类似如下:
*/
typedef struct student {
int id;
char name[32];
} student;
static int
comstup(const void *stup1, const void *stup2)
{
return ((student *)stup1)->id - ((student *)stup2)->id;
}
int
main(int argc, char *argv[])
{
int j;
int array[10] ={9, 5, 56, 46, 8, 33, 23, 39, 19, 2};
qsort(array, 10, sizeof(int), comintp);
for(j = 0; j < 10; j++)
printf("%d\t", array[j]);
printf("\n");
qsort(&argv[1], argc - 1, sizeof(argv[1]), cmpstringp);
for (j = 1; j < argc; j++)
puts(argv[j]);
exit(EXIT_SUCCESS);
}