代码中的运行时错误

san*_*n45 0 c++

在以下程序中旋转一个字符串运行时发生错误.请帮助

代码中没有编译错误

#include <iostream>
#include <cstring>

using namespace std;

void reverseString(char* str, int start, int end)
{
    int front = start;
    int back = end;
    while (front < back)
    {
        /* swap two variables without
        using a temporary one.*/
        str[front] ^= str[back];
        str[back]  ^= str[front];
        str[front] ^= str[back];
        ++front;
        --back;
    }
    return;
}
Run Code Online (Sandbox Code Playgroud)

这部分用于旋转弦

void rotateString(char* str, int k)
{
    if (!str || !*str)
        return;
    int len = strlen(str);
    /*Rotating a string by it's length is string itself.*/
    k %= len;
    reverseString(str, 0, len-1);
    reverseString(str, 0, k-1);
    reverseString(str, k, len-1);
    cout<<str;
    return;
}

int main() {
    rotateString("abcde",2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 8

这是因为您尝试修改文字字符串.所有文字字符串都是常量且只读.试图修改一个导致未定义的行为,这有时可能会工作,有时会崩溃.

试着改为例如

char str[] = "abcde";
rotateString(str, 2);
Run Code Online (Sandbox Code Playgroud)