如题:利用指向指针的指针方法,对六个字符串排序并输出。求问这个程序问题在哪里??
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
char a[6][20],*pa[6],**p;
printf("please input 6 strings :");
for (i=0;i<6;i++)
{
scanf("%s",a[i]);
}
for (i=0;i<6;i++)
{
pa[i]=a[i];
}
p=pa;
for (i=0;i<6;i++)
{
if(strcmp(pa[i],pa[i+1])>0)
{
char temp[20];
strcpy(temp[0],pa[i]);
strcpy(pa[i],pa[i+1]);
strcpy(pa[i+1],temp[0]);
}
}
while(**p!=NULL)
printf("%s\n",*p++);
system("pause");
return 0;
}
除此之外艾有其他问题吗
追答问题挺多的。二级指针char **p;
p=pa; while(**p!=NULL)
*p是存放字符指针的地址。**p是引用。
就像char *p,p是存字符的地址,*p就是引用地址里面的值。
要比较字符串,可以这样循环
for(inti=0;i<n;i++)
for(intj=0;j<n-i-1;j++)
if(strcmp(*(p+j),*(p+j+1))>0)
{
char*temp;
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
给你补充一张图吧,字丑别介意。