我以前写了一个,看看吧。。。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[100000];
char *s;
int n,len,i,j;
printf("请输入要移位的字符串\n");
gets(str);
printf("输入要移的位数,左移用负整数,右移用正整数表示 \n");
scanf("%d",&n);
len=strlen(str);
if(n>0) // 右移
{
s=(char*)malloc((n+1)*sizeof(char));
for(i=len-n,j=0;i<len;i++) //要移动部分
s[j++]=str[i];
for(i=len-1;i>n-1;i--)
str[i]=str[i-n];
for(i=0;i<n;i++)
str[i]=s[i];
}
else //左移
{
n=-n;
s=(char*)malloc((n+1)*sizeof(char));
for(i=0;i<n;i++)
s[i]=str[i];
for(i=0;i<len-n;i++)
str[i]=str[i+n];
for(i=0;i<n;i++)
str[len-n+i]=s[i];
}
printf("%s\n",str);
free((void*)s);
return 1;
}