将第一个字符存于中间变量中,将第二个字符放在第一个字符的位置,第三个字符放在第二个字符的位置,...,最后一个字符位置放在倒数第二个字符的位置,这时候要移动的位数减一,然后再执行循环移位,直到达到所要求移动的位数。
//字符串的循环移位(左移)
#include<iostream>
using namespace std;
void funmove(char *p,int n);
int main(void)
{
char p[100];
int n;
puts("Please enter a String:");
while(gets(p)!=NULL&&p[0]!='\0')
{
cout<<"输入移动的位数为:";
scanf("%d",&n);
getchar(); //用回车来执行输入的n,
//但是这个回车字符也被输入到了数组p中,
//因而跳出了while循环,必须用getchar()来消除这个回车字符
funmove(p,n);
cout<<"左移位后的字符串为:"<<p<<endl;
puts("Please enter a String:");
}
return 0;
}
void funmove(char *p, int n)
{
char temp;
int c;
c=strlen(p);
while(n)
{
temp=p[0];
for(int i=0;i<c-1;i++)
{
p[i]=p[i+1];
}
p[c-1]=temp;
n--;
}
}