コードは、n 要素の 1 次元ベクトルを 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;