写一个函数,把char组成的字符串循环右移
#include<iostream>
using namespace std;
void LoopMove1(char *str,int steps)//方法一
{
int n=strlen(str)-steps;
char *temp;
temp=(char *)malloc(sizeof(char)*(strlen(str)+1));
strcpy(temp,str+n);
strcpy(temp+steps,str);
*(temp+strlen(str))='\0';
strcpy(str,temp);
}
void LoopMove2(char *str,int steps)//方法二
{
int n=strlen(str)-steps;
char *temp;
temp=(char *)malloc(sizeof(char)*(strlen(str)+1));
memcpy(temp,str+n,steps);
memcpy(temp+steps,str,n);
memcpy(str,temp,strlen(str));
}
int main(int argc,char *argv[])
{
int steps;
char *str;
int i;
char ch;
str=(char *)malloc(sizeof(char));
cout<<"输入字符串:"<<endl;
cin>>ch;
for (i=1;ch!='\n';i++)
{
str[i-1]=ch;
str=(char*)realloc(str,sizeof(char)*(i+1));
ch=getchar();
}
str[i-1]='\0';
cout<<"输入 N : ";
cin>>steps;
cout<<str <<"循环右移"<<steps<<"位 "<<endl;
LoopMove1(str,steps);
cout<<str<<endl;
cout<<str <<"循环右移"<<steps<<"位 "<<endl;
LoopMove2(str,steps);
cout<<str<<endl;
return 0;
}