编译没错误运行时出错,刚学指针还不会用 求大神
#include<stdio.h>
#include<string.h>
int main()
{
void change(char a[20],char b[20],char c[20]);
char a[20],b[20],c[20],*p1=a,*p2=b,*p3=c;
scanf("%s%s%s",p1,p2,p3);
change(a,b,c);
printf("%s\n%sn%s\n",*p1,*p2,*p3);
return 0;
}
void change(char a[20],char b[20],char c[20])
{
void jiaohuan(char*p1,char*p2);
char*p1,*p2,*p3;
p1=a,p2=b,p3=c;
if(strlen(a)>strlen(b))
jiaohuan(p1,p2);
if(strlen(a)>strlen(c))
jiaohuan(p1,p3);
if(strlen(b)>strlen(c))
jiaohuan(p1,p3);
}
void jiaohuan(char*p1,char*p2)
{
char t;
t=*p1;
*p1=*p2;
*p2=t;
}
最佳答案
你出错的原因是因为
printf("%s\n%sn%s\n",*p1,*p2,*p3);
p1p2,p3等价于a,b,c的,你的*p1,*p2,*p3只是一个字符,不能用%s输出的
而程序本身的交换也只是交换了第一个字符而已
你要注意的是
char ....,*p1=a;
这个p1与a都是指向字符串的指针
而在表达式中
*p1也可以写成p1[0],它与a1[0]内容完全一致
其他回答
暂无其它回答!