将字符串右循环移位 如循环右移两位 abcdefghi-->hiabcdefg
方法:三步翻转法
#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char *start,char *end)
{
assert(start);
assert(end);
while(start<end)
{
char temp=*start;
*start=*end;
*end=temp;
start++;
end--;
}
}
void RightLoopMove(char *pstr,unsigned short steps)
{
int len=strlen(pstr);
assert(pstr);
reverse(pstr+len-steps,pstr+len-1);
reverse(pstr,pstr+len-steps-1);
reverse(pstr,pstr+len-1);
}
int main()
{
char arr[]="abcdefghi";
unsigned short n=0;
printf("请输入你需要右移的位数\n");
scanf("%u",&n);
RightLoopMove(arr,n);
printf("%s\n",arr);
return 0;
}