//循环右移字符串的字母,比如循环右移abcdef 2位,则应该是efabcd
//strcpy memcpy用法
#include<stdio.h>
#define MAX_LEN 100
void loop_move1(char *pStr, int steps)
{
printf("%s\n", pStr); //abcdef
int n = strlen(pStr) - steps;
char tmp[MAX_LEN] = {0};
strcpy (tmp, pStr + n);
printf("%s\n", tmp); //def
strcpy (tmp + steps, pStr);
printf("%s\n", tmp); //defabcdef
*(tmp + strlen(pStr)) = '\0';
printf("%s\n", tmp); //defabc
//strcpy(pStr, tmp);
}
void loop_move2(char *pStr, int steps)
{
int n = strlen(pStr) - steps; //6-2=4
char tmp[MAX_LEN] = {0};
memcpy (tmp, pStr + n, steps);
printf("%s\n", tmp); //def
memcpy (tmp + steps, pStr, n);
printf("%s\n", tmp); //defabcdef
*(tmp + strlen(pStr)) = '\0';
printf("%s\n", tmp); //defabc
//strcpy(pStr, tmp);
}
int main()
{
char s1[] = "abcdefg";
char *s2 = "ABCDEF";
printf("%s\n", s1); //abcdefg
printf("%s\n", s2+2); //CDEF
loop_move2("abcdef",2);
}
字符数组循环移位
最新推荐文章于 2023-10-14 21:14:40 发布