#include<stdio.h>
#include<string.h>
void sort(char **p)
{
int i,j,k;
char *t=NULL;
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
{
if(strcmp(p[k],p[j])>0)
{
k=j;
}
}
if(k!=i)
{
t=p[k];
p[k]=p[j];
p[j]=t;
}
}
}
int main()
{
char str[5][20],*pstr[5],**p;
int i;
printf("请输入五个字符串:\n");
for(i=0;i<5;i++)
{
//gets(str[i]);
scanf("%s",str[i]);
pstr[i]=str[i]; //pstr[i]存的是每个字符串首元素的地址
} //而*(p+i)存的是 pstr[i]的值,也就是字符串首元素的地址 即:printf("%s",pstr[i])<==>printf("%s",*(p+i))
printf("即:\n");
for(i=0;i<5;i++)
{
printf("%s\n",pstr[i]);
}
p=pstr;
sort(p);
printf("由小到大为:\n");
for(i=0;i<5;i++)
{
printf("%s\n",pstr[i]);
}
}
图一,能正确执行
图二:执行到一半光标就卡住了~~