编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。 例子如:字符串中原有的内容为:abcdefg,则

voidfun(char*s){inti,n=0;char*p=s;while(*p!='\0'){p++;n++;}for(i=0;i<n;i++){s[i]=*p;p... void fun(char*s)
{int i,n=0;
char *p=s;
while(*p!='\0')
{p++;
n++;}
for(i=0;i<n;i++)
{
s[i]=*p;
p--;
}
s[n]='\0';
}为什么运行不出来结果 哪错了呢??
展开
 我来答
wacs5
推荐于2018-05-15 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2787万
展开全部
for(i=0;i<n;i++)
{
s[i]=*p;
p--;
}

你这样子的话,前半段是后半段的数据,而后半段又复制了前半段(这个前半段是改后的前半段)
应当:
void fun(char*s)
{int i,n=0;
char *p=s;
while(*p!='\0')
{p++;
n++;}
for(i=0;i<n/2;i++)
{
char ch;
ch=s[i];
s[i]=*(--p);
*p=ch;
}
}
wangbin45623
2011-03-05 · TA获得超过710个赞
知道小有建树答主
回答量:1216
采纳率:0%
帮助的人:478万
展开全部
我把你的函数稍微改了一下,测试过后正确了,这要是这里要记录原来s[i]的值,就是说s[0]=*p
之后,s[0]被覆盖,当p--到s[0]时,这时原来那个s[0]已被覆盖,找不到了,所以要记录临时值,
我这里用交换的原理
void fun(char*s)
{
int i,n=0;
char *p=s,temp;
while(*p!='\0')
{
p++;
n++;
}
for(i=0;i<=(n-1)/2;i++)
{
temp=s[i];
s[i]=*(p-1);
*(p-1)=temp;
p--;
}
s[n]='\0';
}
追问
临时值交换那能在说说吗?没太看懂,谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式