我有一个反转char数组的函数,但当它到达某一点时,我收到错误。有人可以帮忙吗?我认为,但是我没有找到任何针对此的具体内容。
char* strrev( char* s )
{
char c;
char* s0 = s - 1;
char* s1 = s;
/* Find the end of the string */
while (*s1) ++s1;
/* Reverse it */
while (s1-- > ++s0)
{
c = *s0;
*s0 = *s1; // This is where I am receiving the Bad Access.
*s1 = c;
}
return s;
}
答案 0 :(得分:2)
我会猜测你正在调用你的函数:
char *s = strrev("pancakes");
如果是这样,那么您正在尝试修改字符串文字,并且许多系统将字符串文字放在只读内存中。如果你这样做:
char s1[] = "pancakes";
char *s2 = strrev(s1);
你应该有更好的运气。