您的位置:首页 > 编程语言 > C语言/C++

纪念逝去的岁月——C/C++字符串旋转

2015-03-04 11:58 225 查看
几年前,我还不会写这个

例如:

1、向右→旋转5个字符

输入:HelloWorld

输出:WorldHello

2、向右→旋转3个字符

输入:HelloWorld

输出:rldHelloWo

代码

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int scrollstr(char * p, int iStep)
{
if(NULL == p)
{
return -1;
}
int iLen = strlen(p);
iStep %= iLen;
if(0 == iStep)
{
return 0;
}
char * pt = (char *)malloc(iLen + 1);
if(NULL == pt)
{
return -1;
}
memset(pt, 0, iLen + 1);
int i = 0;
for(i = 1; i <= iStep; i++)
{
pt[iStep - i] = p[iLen - i];
}
for(i = 1; i <= iLen - iStep; i++)
{
p[iLen - i] = p[iLen - i - iStep];
}
for(i = 0; i < iStep; i++)
{
p[i] = pt[i];
}

return 0;
}

int main()
{
char pX[128] = {"HelloWorld"};

printf("src : [%s]\n", pX);
scrollstr(pX, 5);
printf("dst : [%s]\n", pX);

return 0;
}


编译

$ g++ -o scrollstring scrollstring.cpp


运行

$ ./scrollstring
src : [HelloWorld]
dst : [WorldHello]


再见……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: