字符串之把char类型组成的字符串循环右移n位
下面是自己利用指针的方法写的代码:
void LoopMove(char *str,int steps)
{
char temp[MAXSIZE];
int len = strlen(str);
if(steps >= 10 )
{
if(steps%len == 0)steps = len;
else steps = steps%len;
}
len = len - steps;
char *p = str;
char *r = str;
p = p+ len;
char *q = p;
int i = 0;
while(*p != '\0')
{
temp[i++] = *p;
p++;
}
while(r != q)
{
temp[i++] = *r;
r++;
}
temp[i] = '\0';
i = 0;
while(temp[i]!='\0')
{
*str = temp[i];
str++;
i++;
}
*str = '\0';
}
int main(void)
{
char str[] = "abcdef123";
LoopMove(str,18);
printf("%s\n",str);
return 0;
}