The code was suppose to rotate a one-dimensional vector of n elements left by i position. for instance, with n=8 and i = 3, the vector abcdefgh is rotated to defghabc.
T
Memory allocated as a variable initializer, like this...
char* string = "abcdefghijk";
...is immutable. That is, you can't change it, and attempts to write to it will result in a segfault. You can only modify memory allocated via malloc() and friends. You can accomplish this very easily with your static string like this:
char *string = strdup("abcdefghijk");
The strdup() function calls malloc() internally and then copies the source string into the target. You're already #include-ing string.h, so the strdup() function prototype is already available without any additional code.