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对比结果)
<