char*的交换功能

Mar*_*tin 3 c swap

我在下面有一个简单的函数,它交换一个字符数组的两个字符.但是,我在Bla.exe中的0x01151cd7处获得"未处理的异常:0xC0000005:访问冲突写入位置0x011557a4." 错误.两个索引(左侧和右侧)都在数组的限制范围内.我究竟做错了什么?

void swap(char* s, int left, int right) {
    char tmp = s[left];
    s[left] = s[right];
    s[right] = tmp;
}

swap("ABC", 0, 1);
Run Code Online (Sandbox Code Playgroud)

我正在使用VS2010与非托管C/C++.谢谢!

Eva*_*ran 8

您无法修改字符串文字.而是试试这个:

char s[] = "ABC"
swap(s, 0, 1);
printf("%s\n", s);
Run Code Online (Sandbox Code Playgroud)