谭浩强老师《 c程序设计》第八章 例题20
//用指向指针的指针给五个字符串排序
#include <stdio.h>
#include <string.h>
#define line 20 //定义字符串最大长度
void sort(char **p) //冒泡法排序
{
int i,j;
char *temp;
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
{
if(strcmp(*(p+i),*(p+j))>0)
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
int main()
{
int i;
char **p,*pstr[5],str[5][line]; //*pstr[5]是指针数组,存有五个指向一维数组的指针
for(i=0;i<5;i++)
{ pstr[i]=str[i]; } //不能去掉,要让指针数组的数据存入二维数组,注意类型的对应
printf("please input five strings:\n") ;
for(i=0;i<5;i++)
{ scanf("%s",pstr[i]); }
p=pstr; //说明pstr的类型是**point
sort(p);
printf("strings sorted:\n") ;
for(i=0;i<5;i++)
{ printf("%s\n",pstr[i]) ; }
return 0;
}