左旋字符串K个字符

实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
思路就是把字符串复制一遍,就有两个一模一样的连续字符串,无论左旋多少个,都属于复制过后的这个字符串里面的一部分,所以只需要截取出来就好了。

//实现一个函数,可以左旋字符串中的k个字符。
#include<stdio.h>
void Rotateleft(char* src, int n,int i){
    
    
	char tmp[256] = {
    
     0 };
	char s[256] = {
    
     0 };
	// 使src在tmp 里来两遍
	strcpy(tmp, src);//copy函数
	strcat(tmp, src);//stract 把一个加在了前一个字符的后面
	strncpy(s,tmp+i, n);
	//strncpy(q,p,16)就是C语言中专用的截取字符串函数。
	//q是我们把截取的字符串存储到里面。
    //p是我们即将截取的字符串。
    //16是我们从头开始过后的多少位。
	printf("%s\n",s);
}
void main()
{
    
    
	char src[] = "ABCD";
	//AABCDAABCD
	int n=sizeof(src)/sizeof(src[0]);
	int i;
	printf("左移几个字符:");
	scanf("%d", &i);
	Rotateleft(src, n-1,i);
}

这里我们用到了三个库函数
strcpy(tmp, src);//copy函数
strcat(tmp, src);//stract 把一个加在了前一个字符的后面
strncpy(s,tmp+i, n);
//strncpy(q,p,16)就是C语言中专用的截取字符串函数。
//q是我们把截取的字符串存储到里面。
//p是我们即将截取的字符串。
//16是我们从头开始过后的多少位

猜你喜欢

转载自blog.csdn.net/weixin_45070922/article/details/109785396
今日推荐