编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来的是"abcdefg",如果n=2,移位后应该是"fgabcde"。
主要考察的就是标准库函数的熟练程度。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void LoopMove1(char *pstr, int steps)
{
int n = strlen(pstr) - steps;
char tmp[20];
strcpy(tmp, pstr + n);
strcpy(tmp + steps, pstr);
*(tmp + strlen(pstr)) = '\0';
strcpy(pstr, tmp);
printf("%s\n", pstr);
}
void LoopMove2(char *pstr, int steps)
{
int n = strlen(pstr) - steps;
char tmp[20];
memcpy(tmp, pstr + n, steps);
memcpy(pstr + steps, pstr, n);
memcpy(pstr, tmp, steps);
printf("%s\n", pstr);
}
int main()
{
char str[] = "abcdefg"; //必须定义为字符数组,即分配内存空间
printf("srcStr = %s\n", str);
LoopMove1(str, 3);
LoopMove2(str, 5);
}