字符串循环移位,要考虑移位的位数是否超过了字符串的长度。
代码:
//循环左移n位
void loopmove1(char* str,int n)
{
if(NULL == str)
return;
int len = strlen(str);
int num = n % len;
for(int i = 0;i < num;i++){//循环移动num次
char temp = str[0];
for(int j = 0;j < len - 1;j++){
str[j] = str[j+1];
}
str[len-1] = temp;
}
}
void loopmove2(char* str,int n)
{
if(NULL == str)
return;
int len = strlen(str);
int num = n%len;
int temp[max];
strncmp(temp,str,num);//将str的前n个字符放到temp中
strcat(tempstr+num);//将str中后面的字符接到temp后
*(temp+strlen(str)) = '\0';
strcpy(str,temp);
}