#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define N 10
int main()
{
char **p;
char *tmp;
int i=0,j=0;
p= (char**)malloc(N*sizeof(char*)); //给指针数组开辟内存空间
for(i=0;i<N;i++) *(p+i)=(char*)malloc(256); //给字符串开辟内存空间
i=0;
while(i<N)
{
scanf("%s",*(p+i));
i++;
}
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(strcmp(*(p+i),*(p+j))>0) //由小到大排序
{
tmp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=tmp;
}
}
}
printf("======== 神奇的分界线========\n");
for(i=0;i<N;i++)
{
printf("%s\n",*(p+i));
}
return 0;
}
//////////////////////////////////////////////////////////
以下是使用指针数组完成相同的功能
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define N 10
int main()
{
char *p[N];
char *tmp;
int i=0,j=0;
for(i=0;i<N;i++)
{
p[i]=(char*)malloc(256); //给字符串开辟内存空间
memset(p[i],0,sizeof(p[i])); //初始化为 0
}
i=0;
while(i<N)
{
scanf("%s",p[i]);
i++;
}
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(strcmp(p[i],p[j])>0) //由小到大排序
{
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
}
}
printf("======== 神奇的分界线========\n");
for(i=0;i<N;i++)
{
printf("%s\n",p[i]);
}
return 0;
}