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

几年前,我还不会写这个

例如:

1、向右→旋转5个字符

输入:HelloWorld

输出:WorldHello

2、向右→旋转3个字符

输入:HelloWorld

输出:rldHelloWo

代码

 1 #include <string.h>

 2 #include <stdio.h>

 3 #include <stdlib.h>

 4 

 5 int scrollstr(char * p, int iStep)

 6 {

 7     if(NULL == p)

 8     {

 9         return -1;

10     }

11     int iLen = strlen(p);

12     iStep %= iLen;

13     if(0 == iStep)

14     {

15         return 0;

16     }

17     char * pt = (char *)malloc(iLen + 1);

18     if(NULL == pt)

19     {

20         return -1;

21     }

22     memset(pt, 0, iLen + 1);

23     int i = 0;

24     for(i = 1; i <= iStep; i++)

25     {

26         pt[iStep - i] = p[iLen - i];

27     }

28     for(i = 1; i <= iLen - iStep; i++)

29     {

30         p[iLen - i] = p[iLen - i - iStep];

31     }

32     for(i = 0; i < iStep; i++)

33     {

34         p[i] = pt[i];

35     }

36 

37     return 0;

38 }

39 

40 int main()

41 {

42     char pX[128] = {"HelloWorld"};

43 

44     printf("src : [%s]\n", pX);

45     scrollstr(pX, 5);

46     printf("dst : [%s]\n", pX);

47 

48     return 0;

49 }

编译

$ g++ -o scrollstring scrollstring.cpp

运行

$ ./scrollstring 

src : [HelloWorld]

dst : [WorldHello]

再见……

 

你可能感兴趣的:(c/c++)