c-在void reverse(char*)中出现分段错误的原因是什么



运行此代码时,出现分段错误。我该怎么修?

#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"的本地副本。

相关内容

  • 没有找到相关文章

最新更新