在以下程序中旋转一个字符串运行时发生错误.请帮助
代码中没有编译错误
#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)
这是因为您尝试修改文字字符串.所有文字字符串都是常量且只读.试图修改一个导致未定义的行为,这有时可能会工作,有时会崩溃.
试着改为例如
char str[] = "abcde";
rotateString(str, 2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |