【C/C++】将字符串按空格逆置
来源:互联网 发布:一键转发朋友圈 源码 编辑:程序博客网 时间:2024/06/01 16:16
一、题目要求
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
要求:
不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
二、题目分析
初级理解:
乍一看,这是一个字符串逆置
可是真的有这么简单吗?
具体分析:
如上图所示
首先先将整体的字符串进行逆置
然后对各个单词逆置就可以得到我们想要的结果
所以要设置一个函数reverse_all,用来专门进行逆置,参数为逆置的首末地址
然后再用个函数reverse,进行调用reverse_all,来解这道题
三、代码实现
函数代码:
#include<stdio.h>#include<string.h>#include<assert.h>char* reverse_all(char* start , char* end){assert(start != NULL);assert(end != NULL);char* p = start;char tmp = 0;while(start < end){tmp = *start;*start = *end;*end = tmp;start++;end--;}return p;}char* reverse(char* str){assert(str != NULL);char* pstr = str;char* start = str;char* end = str;while(*end != '\0'){while((*end != ' ')&&(*end != '\0')){end++;}end--;reverse_all(start,end);start = end + 2;end = start;}return pstr;}
main函数代码块:
int main(){char str[128] = {"blog to my welcome"};reverse_all(str,str-1+strlen(str));printf("%s\n",reverse(str));return 0;}
运行结果:
1 0
- 【C/C++】将字符串按空格逆置
- C#---将字符串按空格分隔
- 【C/C++】将字符串中间的空格替换为"%20"
- 【C++】将字符串中的空格替换成字符
- C语言实现移除字符串中的空格,并将空格数打印
- c 去除字符串前后空格
- C语言去除字符串空格
- c语言-字符串去空格
- C/C++学习之C提高-----非空格的字符串长度、去掉字符串前后空格、字符串反转、键值对字符串、const练习、二级指针做输入/输出的特性、将字符串按逗号分开,并放入二维数组打印出来
- c语言将字符串中连续出现的空格(两个以上)合并成一个
- C语言实现去除字符串中空格
- C语言除去字符串前后的空格
- 字符串去空格 c语言实现
- Objective C 除去字符串中的空格
- C/C++ / string 字符串去掉左右空格
- C/C++ 去掉字符串首尾空格函数
- C语言实现去除字符串中空格
- C语言-统计字符串空格个数
- 【HDU-oj]-1009-FatMouse' Trade(贪心)
- base64编码转换DLL使用方法定义
- ios常用的第三方类库
- closest
- linux 操作系统中chown命令的使用
- 【C/C++】将字符串按空格逆置
- 引导页 小实例 ViewPager
- mysql 单表多字段模糊查询解决方法
- closest2
- UIImage 类别扩展(图片工具箱)
- Android 5.1精简Gallery2菜单选项
- ubuntu用户管理小知识
- mysql中分类统计的一种好方法
- 06.栈.链栈