编写一个函数,函数的功能是把字符串中的内容逆置

字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。#include<string.h>#include<stdio.h>charfun(... 字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:
gfedcba。

#include<string.h>
#include<stdio.h>
char fun(char *s)
{
char *p;
int i=0,m;
m=strlen(s);
p=s;
for(i=0;i<m+1;i++)
{
*(s+i)=*(p+m-i);
}
}
void main()
{
char *s;
gets(s);
printf("%s\n",fun(s));
}
请问,这个程序哪里错了,谢谢。
展开
 我来答
wqzhishou
2011-11-22 · TA获得超过190个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:102万
展开全部
p和s指向的是同一个字符串,
a b c d
当把*(p+4):d赋给*(s+0):a时,*(p+0)的值也改变了,成了*(s+0):d。
此时,p s指向的字符串为
d b c d。
懂了?

你可以多加一个抽象层次,用一个swap函数完成,
void swap(char* ch1, char* ch2)
{
char tmp = * ch1;
*ch1 = * ch2;
*ch2 = tmp;
}
然后直接调用swap(s+i,p+m-i)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mianfei_ziliao
2011-11-22
知道答主
回答量:34
采纳率:0%
帮助的人:18.9万
展开全部
呵呵 举个例子;
字符是放在指定地址空间里的,你做的仅是把后一地址的内容放在前面的地址空间里,而前面地址空间的内容则被覆盖了
举个例子;
a1=b
a2=c
你想交换a1,a2内容;
而你程序
则是a1=a2=c
b被覆盖了
应该做保护,建个中间变量b0;........b0=a2=c; a2=a1=b; a1=b0=c;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸福丶小丑
2011-11-23 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:105万
展开全部
逆置的话,一个for循环,第一个和最后一个交换,第二个和倒数第二个交换。。。。。。。如此、、如此、、不就可以了吗,代码自己写写试试吧。。祝你好运。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AMKONG
2011-11-22 · TA获得超过349个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:114万
展开全部
我看错了。。你这个逻辑就有问题肯定是不行的p=s指向的是一个地方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式