方法一
#include<stdio.h>
#include<string.h>
void RightLoopMove(char *pStr, unsigned short steps)
{
int i = 0;
int len = strlen(pStr);
char a;
while (steps)
{
a = pStr[len -1]; //将最后一个数取出暂存
for (i = len - 1; i > 0; i--)
{
pStr[i] = pStr[i - 1]; //整体向后移
}
pStr[0] = a; //将最后一个放在最前面
steps--;
}
}
int main()
{
char str[] ="abcdefghi";
RightLoopMove(str, 2);
printf("%s\n", str);
getchar();
return 0;
}
方法二
<pre name="code" class="cpp">#include<stdio.h>
#include<string.h>
void reserve(char *l,char *r)
{
while (l < r)
{
char tmp = *l;
*l = *r;
*r = tmp;
l++;
r--;
}
}
void RightLoopMove(char *pStr, unsigned short steps)
{
int len = strlen(pStr);
reserve( &pStr[len - steps], &pStr[len - 1]); //abcdefgih
reserve( &pStr[0], &pStr[len -steps - 1]); //gfedcbaih
reserve( &pStr[0], &pStr[len - 1]); //hiabcdefg
}
int main()
{
char str[] = "abcdefghi";
RightLoopMove(str, 2);
printf("%s\n", str);
getchar();
return 0;
}