#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int stucmp1(char *s1,char *s2){
return strcmp(s1,s2);
}
int stucmp2(char *s1,char *s2){
int a=(int)strlen(s1);
int b=(int)strlen(s2);
if(a==b)
return 0;
else if(a>b)
return 1;
else
return -1;
}
void stu_sort(char **stu,int n,int(*p)(char*,char*)){
int i=0,j=0;
char *s;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
if(p(stu[j],stu[j+1])>0){
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
int main(){
char *stu[]={"Yang","Li","ZhaoL","Qian","Sun","ChenMM"};
stu_sort(stu,6,stucmp1);
for(int i=0;i<6;i++)
printf("%s\n",stu[i]);
stu_sort(stu,6,stucmp2);
for(int i=0;i<6;i++)
printf("%s\n",stu[i]);
}
注意:
1:当指针指向一段字符串时,字符串的地址是固定,指针数组要排序,就要交换指针指向的地址。
2:体会函数指针的用法