求字符串左右循环移动所得到的的字符串
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *shift(char *pstr,int n, char mode);
int main(){
char str[100];
char mode;
int n;
printf("请输入字符串:\n");
gets(str);
printf("请输入移动方向(R or L)和移动位数:\n");
scanf("%c",&mode);
scanf("%d",&n);
char *p;
p=shift(str,n,mode);
puts(p);
return 0;
}
char *shift(char *pstr,int n, char mode){
char *p;
p=(char*)malloc(10*sizeof(char));
int i=0,j=0,k=0;
int size=strlen(pstr)-n;
switch(mode){
case 'R': {
j=size;
while(pstr[j]!='\0')
p[i++]=pstr[j++];
while(k<size)
p[i++]=pstr[k++];
printf("循环右移%d位得到 :\n",n);
break;
}
case 'L': {
j=n;
while(pstr[j]!='\0')
p[i++]=pstr[j++];
while(k<n)
p[i++]=pstr[k++];
printf("循环右移%d位得到 :\n",n);
break;
}
default : printf("输入错误!\n");break;
}
return p;
}