运行此代码时,出现分段错误。我该怎么修?
#include <stdio.h>
void reverse(char *str)
{
char *end=str;
char temp;
while(*end)
{
++end;
}
--end;
while(str < end)
{
temp=*str;
*str=*end;
*end=temp;
str++;
end--;
}
}
void main()
{
char *s="random";
reverse(s);
}
您正在尝试反转常量值。现在这是不可能的。因为您正在尝试更改只读内存的一部分。
解决方案:只需使用
char s[]="random";
上一个案例:s指向常量"随机"。
在这种情况下:s指向堆栈内存中字符串文字"random"的本地副本。