#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void rotate(char *s, int n) {
char *tmp = strdup(s);
int len = strlen(s);
if (n < 0)
n = len + (n % len);
for (int i = 0; s[i] != 0; i++) {
int idx = (i + n) % len;
tmp[idx] = s[i];
}
memcpy(s, tmp, len);
free(tmp);
}
int main(void) {
char s1[] = "aabcccdeeffffgac";
puts(s1);
rotate(s1, -3); // left
puts(s1);
char s2[] = "aabcccdeeffffgac";
puts("\n");
puts(s2);
rotate(s2, 7); // right
puts(s2);
return 0;
}
/*
run:
aabcccdeeffffgac
cccdeeffffgacaab
aabcccdeeffffgac
ffffgacaabcccdee
*/