实现一个函数,可以左旋字符串中的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是我们从头开始过后的多少位