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

2024-12-18 13:51:53
推荐回答(2个)
回答1:

for(i=0;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 {
char ch;
ch=s[i];
s[i]=*(--p);
*p=ch;
}
}

回答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';
}