在反转字符串时交换指针值时出现分段错误

时间:2013-03-12 23:54:52

标签: c pointers

我正在尝试反转一个字符串。我拿了两个指针,一个指向字符串的开头,另一个指向字符串的末尾。然后我交换了指针的值。

int main()
{

    char *string = "stack overflow";
    int len = strlen(string);
    char *end;
    char tmp; //temporary variable to swap values

    //pointer pointing at the end of the string
    end = string+len-1;

    printf(" value of start and end %c %c", *string , *end); //correct values printed
    while(string<end)
        {

                tmp = *string;
                *string = *end; //segmentation fault
                *end = tmp;
                *string++;
                *end--;


        }


    return 0;

}

1 个答案:

答案 0 :(得分:5)

char *string = "stack overflow";

这将创建一个只读字符串文字。修改它是未定义的行为。改为使用数组:

char string[] = "stack overflow";