排序字符串,按长度排序,如果长度一样则按字典顺序排序。
需要注意的是cmpfun传入的两个参数的是指向数组元素的指针,即传入的a,b实际是char**类型。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmpfun(const void *a,const void *b){
char *str1=*(char**)a;
char *str2=*(char**)b;
int x=strlen(str2)-strlen(str1);
return x?x:strcmp(str1,str2);
}
int main(){
char *dir[]={"aaaa","cccc","dd","zz","fff","aa","bbb","cc"};
int size=sizeof(dir)/sizeof(char*);
qsort(dir,size,sizeof(char*),cmpfun);
for(int i=0;i<size;i++){
printf("%s ",dir[i]);
}
return 0;
}