<span style="background-color: rgb(51, 204, 0);">/*
*请实现字符串右循环移位函数,比如“abcdefghi”
*循环右移俩位就是“hiabcdefg”
*函数原型:
* void RightLoopMove(char* pStr,unsigned short steps)
*函数参数说明:
* pStr:目标字符串;steps:右循环位数。
*/</span>
#include<stdio.h>
#include<string.h>
void RightLoopMove(char* pStr,unsigned short steps)
{
char temp;
int n = strlen(pStr);
int i = 0;
steps %= n;//如果享有移位steps过大,取余可提高效率
while(steps > 0)
{
temp = pStr[n-1];
//for(i=n;i>0;i--)//直接将最后一位‘\0’给覆盖,导致输出结果不可预定
for(i=n-1;i>0;i--)//将‘\0’保留
{
pStr[i] = pStr[i-1];
}
pStr[0] = temp;
steps--;
}
}
int main()
{
char pStr[] = "abcdefghi";
RightLoopMove(pStr,10);
printf("%s\n",pStr);
return 0;
}