编写一个函数,作用是把一个char组成的字符串循环右移n个。比如字符串:Iloveyou循环向右移动2个位置得到ouIlovey.
#include <iostream>
#include<cstring>
using namespace std;
#define MAX 20
void LoopMove(char *str, int steps)
{
int len = strlen(str);
//cout<<"len is"<<len<<endl;
char tmp[MAX];
strcpy(tmp, str+len-steps);//strcpy的用法是strcpy(a,b),将b指针位置之后的数组元素赋值给a,需要注意结束标识符为‘\0’.
strcpy(tmp+steps, str);
tmp[len] = '\0';
strcpy(str, tmp);
printf("%s",str);
cout<<endl;
}
void LoopMove2(char *st2,int steps)
{
int len=strlen(st2);
char temp[MAX];
// char temp1[MAX];
/*
memcpy(temp,(st2+(len-steps)),steps);
memcpy(temp1,st2,(len-steps));
memcpy((temp+steps),temp1,(len-steps));
// temp[len]='\0';
strcpy(st2,temp);
*/
memcpy(temp,st2+(len-steps),steps);//memcpy(a,b,c)将b指针位置处的c个数组元素赋值给a.
memcpy(temp+steps,st2,(len-steps));
memcpy(st2,temp,len);
printf("%s",st2);
}
int main()
{
char st[]="Iloveyou";
LoopMove(st,2);
char st2[]="Iloveyou";
LoopMove2(st2,2);
// cout<<str<<endl;
return 0;
}
//字符串传递形参
/*
void test(char *&p)
{
p="B";
}
int main()
{ char *p="A";
test(p);
cout<<p;
}
*/