思路分析:
最好想的思路就是把要左旋的字符拿下来,然后用strcat拼接在剩余的字符串后面
但是对于左旋的字符不好操作,所以我们把剩下的字符取出
如果字符串长度为5,左旋6位,其实就是左旋一位,对字符串长度取余数即可
最后把新的字符串拷贝给原字符串
代码示例:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Blodd(char str[], int n)
{
int size = strlen(str);
char tmp[1024] = { 0 };
int i = 0;
n %= size; //如果左旋字符多于字符串长度取余数即可
for (; i < size - n; ++i)
{
tmp[i] = str[i + n]; //拿不掉左旋的字符,所以我们拿下来剩下的
}
for (i; i < size; ++i)
{
tmp[i] = str[(i + n) - size]; // 现在把开头的,也就是左旋的字符拿出来赋值
}
strcpy(str, tmp);
}
int main()
{
char str1[] = "ABCDE";
/*char str2[] = "CEDAB";*/
Blodd(str1, 3);
printf("%s", str1);
system("pause");
return 0;
}