该代码假设将一个由 n 个元素组成的一维向量旋转到 i 位置。例如,当 n=8 和 i = 3 时,向量 abcdefgh 旋转为 defghabc。
以下在 string_reverse 函数处崩溃。无法找出那里出了什么问题。
#include <stdio.h>
#include <string.h>
#include < conio.h>
void string_reverse(char* str, int left, int right )
{
char *p1 = str + left;
char *p2 = str + right;
while (p1 < p2)
{
char temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
void rotate( char* str, int k )
{
int n = strlen( str );
string_reverse( str, 0, k - 1 );
string_reverse( str, k, n - 1 );
string_reverse( str, 0, n -1 );
}
int main(int argc, char* argv[])
{
char* string = "abcdefghijk";
rotate( string, 3 );
printf("%s",string );
getch();
return 0;
}
it crashes at
*p1 = *p2;