大佬们帮忙看一下错在哪 用指向指针的指针的方法对5个字符串排序
#include<stdio.h>#include<string.h>
main()
{
int i,j,k;
char a[5][20],*num[5],**p1=NULL,**p2=NULL,*t;
printf("输入五个字符串");
for(i=0;i<5;i++) //输入字符串
gets(a[i]);
for(i=0;i<5;i++) //将字符串的首地址赋给指针数组
num[i]=a[i];
printf("输入的五个字符串分别是:\n");
for(i=0;i<5;i++)
printf("%s ",num[i]);
for(i=0;i<=3;i++)
{
p1=&num[i];
for(j=i+1;j<=4;j++)
{
if(strcmp(num[i],num[j])>0)
{
p2=&num[j];
k=1;
}
}
if(k)
{
t=*p2;
*p2=*p1;
*p1=t;
k=0;
}
}
printf("\n排序后的字符串:\n");
for(i=0;i<5;i++)
printf("%s\n",num[i]);
}
这是我写的,原意是想通过strcmp函数对两个字符串比较,从小到大排列。我运行没问题,但是我试了一下,在输入 Follow me BASIC Great Wall FORTRAN Computer design
输出的是Computer design BASIC Follow me FORTRAN Great Wall 按照我的想法FORTRAN应该在Follow me前面的。后来我在输入的时候先输了 FORTRAN ,结果就正确了
求大佬帮忙看看
[此贴子已经被作者于2020-1-10 01:08编辑过]