#include<iostream>
using namespace std;
void LeftShiftOne(char *s, int n)
{
char t = s[0];
for (int i = 1;i < n;i++)
{
s[i-1] = s[i];
}
s[n - 1] = t;
}
void LeftRotateString(char *s, int n, int m)
{
while (m--)
{
LeftShiftOne(s, n);
}
}
int main()
{
char *s = "abcdef";
int m = 3;
int n = 6;
LeftRotateString(s, n, m);
cout << s << endl;
return 0;
}
执行时出现了异常: 写入访问权限冲突
原因是:char s = "abcdef";有问题。将字符指针s指向了一个字符串常量,所以在子函数中不可以通过s来修改字符串常量
可以通过将字符串常量初始化成一个字符数组来解决 :char s[] = "abcdef";因为s[i]不是常量,所以可以通过*str来修改该字符数组,即修改了该字符串。
网友评论