字符串右循环移位
2017-07-14 15:14
211 查看
编写函数实现字符串有循环移位,下面给出了字符串有循环移位的两种方法,二者皆有不同但是最终结果是相同的。
执行结果:
![](https://img-blog.csdn.net/20170714150843518?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFnaWNseWo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这里只需要看代码就可以了,这里唯一要说的是memcpy和strcpy在对同一块内存操作的时候会产生覆盖的现象,慎重操作。其他的不需要太多的解释。如果看不明白的自己画图理解, 还有你可能对字符串操作函数不是太明白,需要你单独去学习一下字符串操作的基本八个函数,
这是我当时写过的一个博客,主要是针对str函数操作和使用进分析和展示
http://blog.csdn.net/magiclyj/article/details/69389746。
#include<iostream> #include<string.h> using namespace std; void RightLoopMove1(char *pStr, unsigned short steps)//时间换取空间 { char tmp;//只需要开辟一个空间来完成 unsigned short step = steps; while(step > 0) { tmp = *(pStr + strlen(pStr)-1); for(int i=strlen(pStr)-1; i>0; --i) { pStr[i] = pStr[i-1]; } *pStr = tmp; step -- ; } } void RightLoopMove(char *pStr, unsigned short steps)//空间换取时间 { unsigned short str_len = strlen(pStr); unsigned short step = steps % str_len; char * tmp = (char*) malloc(sizeof(char) *step ); memset(tmp, 0, step); strncpy(tmp, (pStr+str_len-step), step); memcpy(pStr+step, pStr,str_len-step); strncpy(pStr, tmp,step); free(tmp); } int main() { char ar[] = "abcdefghi"; RightLoopMove(ar,5); RightLoopMove1(ar,5); cout<<ar<<endl; return 0; }
执行结果:
这里只需要看代码就可以了,这里唯一要说的是memcpy和strcpy在对同一块内存操作的时候会产生覆盖的现象,慎重操作。其他的不需要太多的解释。如果看不明白的自己画图理解, 还有你可能对字符串操作函数不是太明白,需要你单独去学习一下字符串操作的基本八个函数,
这是我当时写过的一个博客,主要是针对str函数操作和使用进分析和展示
http://blog.csdn.net/magiclyj/article/details/69389746。
相关文章推荐
- 判断一个给定的字符串通过循环移位是否可以包含另一个字符串
- 实现字符串右循环移位函数。
- 字符串循环移位
- alg : 字符串按照字符进行循环移位(左旋转 or 右旋转)
- 字符串操作之循环移位
- 读书笔记--字符串循环移位
- [字符串] 一个巧妙的字符串循环移位法
- 字符串循环移位
- 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
- 读书笔记--字符串循环移位
- 算法之---字符串循环移位
- 字符串循环移位
- 字符串循环移位
- 字符串循环移位包含
- 字符串循环移位 编程之美3.1
- 字符串 --- 循环移位问题
- (转)字符串循环移位
- 字符串右循环移位
- 判断字符串可否通过另一个字符串的循环移位得到 [No. 34]
- 【算法】字符串循环移位后是否包含