字符串分配seg fault - 为什么会发生这种情况?

Jos*_*son 4 c reverse segmentation-fault

可能重复:
获取分段错误

/*  Reverse a string in place
 */
#import <stdio.h>

void reverse(char * str);

int main()
{
    char * string = "This is a string.";
    printf("%s\n", string);
    reverse(string);
    printf("%s\n", string);
}

void reverse(char * str)
{   
    char * start = str;
    char * end = str;
    if(0==*str)
        return;

    //Find the end
    for(;0 != *(++end););

    end--;
    do
    {
        *end   = *end ^ *start;
        *start = *end ^ *start;
        *end   = *end ^ *start;
    }while(++start < --end);
}
Run Code Online (Sandbox Code Playgroud)

我不确定为什么这个seg会出错.是因为我用常量字符串初始化我的char*?

Mic*_*kis 6

您正在尝试修改字符串常量.更换:

char * string = "This is a string.";
Run Code Online (Sandbox Code Playgroud)

char string[] = "This is a string.";
Run Code Online (Sandbox Code Playgroud)

解决这个问题.