qsort例子
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> typedef struct{ int i; char str[16]; } d_t; #define SIZE_D_T 50 d_t *fill() { d_t *d = (d_t *)malloc(SIZE_D_T*sizeof(d_t)); d_t *p; p=d; srand(time(NULL)); for (int i=0;i<SIZE_D_T;i++) { p->i = rand(); sprintf(p->str,"%15d",p->i); printf("%d %s\n",p->i,p->str); p++; } return d; } int compare_dt(const void *a, const void *b) { return (*(d_t *)a).i - (*(d_t *)b).i; } void print_dt(d_t *d) { d_t *p = d; printf("======================\n"); for (int i=0;i<SIZE_D_T;i++) { printf("%d %s\n",p->i,p->str); p++; } } int main() { d_t *d = fill(); qsort(d,SIZE_D_T,sizeof(d_t),compare_dt); print_dt(d); return 0; }