C语言编程问题,指针。初学者求大神指点

如题:利用指向指针的指针方法,对六个字符串排序并输出。求问这个程序问题在哪里??

#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;
}

strcpy(temp[0],pa[i]);
你把指针的内容(字符串)赋值给字符数组的第一个元素,当然不行啦。追问

除此之外艾有其他问题吗

追答

问题挺多的。二级指针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;

        }

给你补充一张图吧,字丑别介意。


温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答