一个交换字符串问题,请大家帮忙!!!

confident001 2007-06-14 06:41:33
#include<stdio.h>
void swap(char **a,char **b){
char *c,e[10];
c=e;
*c=**a;
**a=**b;
**b=*c;
}
void main(){
char *p,*q,**a,**b,e[10],f[10];
p=e;q=f;
printf("input string:\n");
scanf("%s %s",p,q);
printf("before swap:%s %s\n",p,q);
a=&p;b=&q;
swap(a,b);
printf("After swap:%s %s",p,q);
getch();
}

输入:asd qwe
输出:before swap:asd qwe
   After swap:qsd awe
问题出在我要输出的结果中的After swap:应该是qwe asd而不是只有改变开头字符的。麻烦大家帮帮忙,谢谢了!!!
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangbch 2007-06-14
  • 打赏
  • 举报
回复
#include "conio.h"

//方法1:仅仅交换指针,字符串内容不变
void swap1(char **a,char **b)
{
char *t;
t=*a;
*a=*b;
*b=t;
}

void main()
{
char *p,*q,e[10],f[10];
p=e;q=f;
printf("input string:\n");
scanf("%s %s",p,q);
printf("before swap:%s %s\n",p,q);
swap1(&p,&q);
printf("After swap:%s %s",p,q);
getch();
}

//方法2:真正交换字符串
void swap2(char *p,char *q)
{
char buff[80];
char *pS,*pT;

pS=p;
pT=buff;
while (*pS) //copy from p to buff
*pT++ = *pS++;
*pT=0;

pS=q;
pT=p;
while (*pS) //copy from q to p
*pT++= *pS++;
*pT=0;

pS=buff;
pT=q;
while (*pS) //copy from buff to q
*pT++= *pS++;
*pT=0;
}

void main()
{
char *p,*q,e[10],f[10];
p=e;q=f;
printf("input string:\n");
scanf("%s %s",p,q);
printf("before swap:%s %s\n",p,q);
swap2(p,q);
printf("After swap:%s %s",p,q);
getch();
}
huashizhixin 2007-06-14
  • 打赏
  • 举报
回复
来晚了.....
confident001 2007-06-14
  • 打赏
  • 举报
回复
我知道了,原来是我的
char *c,e[10];
c=e;
*c=**a;
**a=**b;
**b=*c;
}
写错了,应该是
char *c,e[10];
c=e;
*c=*a;
*a=*b;
*b=c;
}

softwarewander 2007-06-14
  • 打赏
  • 举报
回复
lz的例子只是交换了首地址内容的咚咚. 所以只交换了a 和q

要完成整个字符的交换 建议使用指针数组.
星羽 2007-06-14
  • 打赏
  • 举报
回复
好混乱啊

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧