C语言请实现字符串循环右移函数
转载:https://blog.****.net/archyli/article/details/53562945
C语言请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”
#include <stdio.h>
#include <string.h>
#include <assert.h>
void RightLoopMove(char *pStr, unsigned short steps)
{
int i = 0;
int len = strlen(pStr);//字符串长度
assert(pStr);
for (i = 0; i < steps; i++)
{ //pStr表示字符串头(序号为0,和数组一样理解) len-1是字符串序号的最大排序,
char *pend = pStr + len - 1;//指针指向了字符串的尾部
//将尾部的数据取出来放到临时变量tmp里
char tmp = *(pStr + len - 1);//获取字符串尾部的字符(这里* 是指针解引用,取出具体值)
while (pStr <= pend)//判断字符串尾指针是否指过了字符串头
{
*pend = *(pend - 1);//将字符串前一个字符拿出来,放到字符串后面
pend--;//字符串尾指针,又向头指针的方向走一个,然后又替换一次数据,从而达到所有字符右移一个的目的
}
//当所有字符串整体右移一位时,最后将临时变量的值放到字符串头
*pStr = tmp;
}
}
int main()
{
char str[] = "abcdef";
RightLoopMove(str,1);
printf("%s\n", str);
getchar();
return 0;
}