编一个函数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';
}为什么运行不出来结果 哪错了呢?? 展开
{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';
}为什么运行不出来结果 哪错了呢?? 展开
2个回答
展开全部
我把你的函数稍微改了一下,测试过后正确了,这要是这里要记录原来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';
}
之后,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';
}
追问
临时值交换那能在说说吗?没太看懂,谢谢~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询