编译没错误运行时出错,刚学指针还不会用 求大神

原问题:编译没错误运行时出错,刚学指针还不会用 求大神
分类:编程开发 > 最后更新时间:【2016-12-13 05:59:02】
问题补充:

#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]内容完全一致

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
4

分享到:

其他回答

暂无其它回答!

    推荐