#include <stdio.h>
#include <stdlib.h>
char * invert(char * start, char *end);
char * left(char * s, int pos);
int main()
{
char s[] = "abcdefghij";
puts(left(s, 3));
return 0;
}
char *invert(char * start, char * end)
{
char temp, * pTemp = start;
while(start!=NULL&&end!=NULL&&start<end)
{
temp = * start;
* start = * end;
* end = temp;
start++;
end--;
}
return pTemp;
}
char *left(char *s, int pos) //pos为要旋转的字符个数,或长度,下面主函数测试中,pos=3。
{
int len = strlen(s);
invert(s, s + (pos - 1)); //如上,X->X^T,即 abc->cba
invert(s + pos, s + (len - 1)); //如上,Y->Y^T,即def->fed
invert(s, s + (len - 1)); //如上,整个翻转,(X^TY^T)^T=YX,即 cbafed->defabc。
return s;
}