将字符串循环左移N个位置(讯飞笔试题)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void move_string_one_left(char *str) // 循环左移一次函数
{
if (NULL == str)
return;
int len = strlen(str);
int i;
if (len == 0)
return;
char tmp = str[0]; // 比较节约空间
for (i=0; i<len-1; i++)
{
str[i] = str[i+1];
}
str[i] = tmp;
}
void move_string_reverse_left(char *str, int mov) // 左移函数
{
for(int i=0;i<mov;i++)
move_string_one_left(str);
}
// 注意:以上函数都是传递指针,不改变指针指向的值,函数结束时,这种改变可以被带回
int main()
{
char str[] = "Hello World!";
int n = 6 ; // 左移位数
move_string_reverse_left(str, n);
printf("%s\n", str);
return 0;
}