题目:例如“abcdefgh”这个字符串,移位数是3时,字符串变为“defghabc”
1 #include <iostream> 2 #include <string.h> 3 4 using namespace std; 5 6 void StringToRotate(char *str,int n) 7 { 8 int len=strlen(str); 9 if (len<=n) 10 { 11 return; 12 } 13 char *str1=new char[len]; 14 for (int i=0;i<len;i++) 15 { 16 if(i<(len-n)) 17 str1[i]=str[n+i]; 18 else 19 str1[i]=str[i- len+n]; 20 } 21 memcpy(str,str1,len); 22 /* 23 for (int j=0;j<len;j++) 24 { 25 str[j]=str1[j]; 26 } 27 */ 28 delete []str1; 29 } 30 31 int main() 32 { 33 char str[]="abcdefgh"; 34 StringToRotate(str,3); 35 cout<<str<<endl; 36 37 return 0; 38 }
有几点必须注意,定义中间变量str1存放结果是,不能str1[len]这样,数组必须是个确定的值,
所以才用动态内存分配。因为只需要复制字符串的前len个字符,所以采用mencpy而非strcpy,当str1长度与str相同时才可用strcpy