方法一:开辟一个空间存放移位后的字符串,但是空间耗费大且引用了库函数。程序与测试如下:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void RightLoopMove(char *pStr,unsigned short steps)
{
char *data;
int len = strlen(pStr);//确定字符串长度
steps %= len;//求模可知其实际所需移动最小位数
if(steps == 0)//若为零,则不变
{
return;
}
data = (char*)malloc(sizeof(char)*len+1);//否则开辟字符串空间
strcpy(data,pStr+(len-steps));//拷贝所需移位的后半部分
strncat(data,pStr,len-steps);//将前半部分连接到后半部分之后
strcpy(pStr,data);//将字符串拷贝回原字符串空间
free(data);//释放开辟的空间
}
int main()
{
int i;
char str[] = "abcdefghi";
printf("%s\n",str);
RightLoopMove(str,2);
printf("%s\n",str);
return 0;
}
执行结果如图: