纪念逝去的岁月——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]

再见……

 


本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4312931.html,如需转载请自行联系原作者


相关文章
|
4月前
|
C语言 C++
【实战指南】 C/C++ 枚举转字符串实现
本文介绍了在C/C++中实现枚举转字符串的实用技巧,通过宏定义与统一管理枚举名,提升代码调试效率并减少维护错误。
315 57
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
297 5
|
9月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
216 16
|
缓存 网络协议 API
C/C++ StringToAddress(字符串转 boost::asio::ip::address)
通过上述步骤和示例代码,你可以轻松地在C++项目中实现从字符串到 `boost::asio::ip::address`的转换,从而充分利用Boost.Asio库进行网络编程。
352 0
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
算法 C++
2730. 找到最长的半重复子字符串(c++,滑动窗口)
2730. 找到最长的半重复子字符串(c++,滑动窗口)
567. 字符串的排列(c++)滑动窗口
567. 字符串的排列(c++)滑动窗口
113 1
|
C++
C++代码来计算一个点围绕另一个点旋转45度后的坐标
C++代码来计算一个点围绕另一个点旋转45度后的坐标
293 0