Here is the code,
Code:
void reverseStr(char* l, char* r)
{
char* p = l;
char t;
int len = 0;
while(*p)
{
*r++ = *p++;
len++;
}
*r = '\0';
p = r-len;
r = r-1;
while(p<r)
{
t = *r;
*r-- = *p;
*p++ = t;
}
}
int main(int argc, char* argv[])
{
char s[24] = "abcdefg";
char r[24];
reverseStr(s, r);
cout<<r<<endl;
return 0;
}
The output is "gfedcba". But I would expect it to be "dcba". Take a look at
while(p<r)
{
t = *r;
*r-- = *p;
*p++ = t;
}
r eventually will move to the middle of "gfedcba", which is "dcba". How come r points to 'g' finally? Thanks.