编写一个函数,把一个char组成的字符串循环右移n位

本文介绍如何编写一个C语言函数,该函数接收一个以''结尾的字符串指针和移动位数n,实现字符串的循环右移。例如,将字符串'abcdefghi'右移2位后变为'hiabcdefgh'。函数名为LoopMove,详细实现代码见下文。
摘要由CSDN通过智能技术生成


例如:把一个char 组成的字符串循环右移 n 位,原来是 ”abcdefghi“,如果 n = 2,移位后应该是 ”hiabcdefgh“

函数头如下:

/**

@ pstr      指的是以 '\0' 结尾的字符串指针

@ steps   指的是要求移动的位数 n

*/


void LoopMove(char *str, int steps)

{

........

}



void LoopMove(char *pStr, int steps)
{
	if (pStr==NULL)
		return ;
	int len = strlen(pStr);
	steps = steps % len;

	int lenNew = len-steps; //移动后的后lenNew位字符
	char *strTemp = (char *)malloc(lenNew+1);
	//将移位前的前lenNew为保存起来
	if (strTemp==NULL) {
		puts("申请内存失败!");
		return ;
	}
	strncpy(strTemp, pStr, lenNew);
	strTemp[lenNew] = '\0';

	//将需要移动的后steps位字符保存到pstr前 steps位
	int i = 0;
	for (; i<steps; ++i)
	{
		pStr[i] = pStr[lenNew++];
	}
	pStr[i] = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值