方法1:
把要移位的字符,复制到 a 中,s 中的字符串前移,把a中的字符移动到s的后面
// n 移位的个数,m 字符串总个数
void fun(char *s, int n, int m)
{
char *a = (char*)malloc(sizeof(char)*n);
int i, j;
for (i = 0; i < n; i++)
{
a[i] = s[i];
}
for (j = 0; i < m; i++,j++)
{
s[j] = s[i];
}
for (i = 0; i < n; i++,j++)
{
s[j] = a[i];
}
free(a);
}
方法2:
三步反转,把字符串分为2部分,把2部分的字符分别反转,再把整个字符都反转
void reversal(char *s,int begin,int end)
{
char t;
while (begin < end)
{
t = s[begin];
s[begin++] = s[end];
s[end--] = t;
}
}
void fun(char *s,int n,int m)
{
reversal(s, 0, n - 1);
reversal(s, n, m - 1);
reversal(s, 0, m - 1);
}