如何把char字符串循环右移N位

本文介绍了如何使用C语言将字符串循环右移N位,分别利用strcpy()和memcpy()函数实现。针对memcpy()的实现,讨论了在Windows和Linux环境下,重叠复制的不同行为,指出在Linux环境下,方法2可能导致错误,而在Win64环境下正确。建议使用时注意检查是否有重叠。
摘要由CSDN通过智能技术生成

C语言实现:输入一个字符串,将其循环右移N位。


1.利用strcpy()函数实现:



即将输入pStr的后N位放入temp的前N位,再将pStr所有(到‘\o’结束)放入temp的后面。

假如pStr="12345678",N(nbits)=3,则这时候,temp=“67812345678”,

所以再把temp后面多余部分截掉,最后复制回pStr即完成。


2.利用memcpy()函数实现:



这是在网上看到的另外一种思路。

第一步还是同样将pStr的后N位放入temp的前N位,

但是后面的代码就让人看不懂了。。

第二步它的目的是将pStr的前面部分(length-N)后移N位,就是直接把pStr的前面N个位置“让”出来。但是————

可以这样做?不是有重叠部分吗?拷贝到第N位后会出错吧?还没拷贝出去就被覆盖了呀?


带着这样的疑问,在我的Windows电脑上测试运行:

(方法1和方法2对比结果)

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值