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;
}
}
我把你的函数稍微改了一下,测试过后正确了,这要是这里要记录原来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';
}