当我这样调用时,下面的代码将起作用:
char arr[] = "foobar";
reverse(arr);
但是当我这样调用时它不起作用,因为它指向只读部分
char*a = "foobar";
reverse(a);
现在我的问题是,有什么办法可以避免用户这样打电话?
void reverse(char *str)
{
char * end = str;
char tmp;
if (str)
{
while (*end)
{
++end;
}
--end;
while (str < end)
{
tmp = *str;
*str++ = *end;
*end-- = tmp;
}
}
}