%s prints the whole string. If the starting point for the string steps ahead by one character each iteration, you basically chop off the first character each time.
char const* x = "Alice";
printf("%s", x); // "Alice"
++x;
printf("%s", x); // "lice"
++x;
printf("%s", x); // "ice"
++x;
printf("%s", x); // "ice"
++x;
printf("%s", x); // "ce"
++x;
printf("%s", x); // "e"
By the way, this line:
*x=x[n];
is very bad. x is a pointer to a string literal, and string literals are not allowed to be modified. But that statement tries to overwrite the first character of the string literal with the last.