题目:

实现一个函数,可以左旋字符串中的k个字符。

例如:

  • ABCD左旋1个字符得到BCDA
  • ABCD左旋2个字符得到CDAB

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <assert.h>
#include <string.h>


//除第1个外,全部往前1位,然后原第1个填充至极右
void Left_reverse(char* p, int num)
{
	assert(p);

	int len = strlen(p);
	char tem = 0;
	int i = 0;
	num %= len;

	while (num--)
	{
		tem = *p;//记录极左值
		for (i = 0; i < len - 1; i++)//其它值往前移
		{
			*(p + i) = *(p + i + 1);
		}
		*(p + len - 1) = tem;//极左 -->  极右
	}
}

int main()
{
	int input = 0;
	char str[] = "ABCDE";
	
	Left_reverse(str, 2);

	printf("%s\n", str);

	return 0;
}

运行结果:

C语言解题||字符串左旋_字符串