关于字符串逆置的小题
2016-04-09 14:27
295 查看
//5.有一个字符数组的内容为:”student a am i”,请
//你将数组的内容改为”i am a student”.
//要求:
//不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
在这里我们所采用的方法简单说就是先将 student a am i变成i ma a tenduts,然后,再进行对每个单词进行逆置。最终变成 i am a student。
//你将数组的内容改为”i am a student”.
//要求:
//不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
在这里我们所采用的方法简单说就是先将 student a am i变成i ma a tenduts,然后,再进行对每个单词进行逆置。最终变成 i am a student。
#include <stdio.h> #include<stdlib.h> void reverse(char *left, char *right) { while(left<right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } } void reverse_str(char arr[], int sz) { char *left = arr; char *right = arr+sz-1; char *start = arr; char *end = arr; reverse(left, right); while(*end != '\0') { while((*end != ' ') && (*end != '\0')) { end++; } reverse(start, end-1); if(*end != '\0') { start = end+1; end = start; } } } int main() { char arr[] = "student a am i"; int sz = sizeof(arr)/sizeof(arr[0])-1; reverse_str(arr, sz); printf("%s\n",arr); system("pause"); return 0; }
相关文章推荐
- 转载:C语言编译原理简介
- 《大卫·戈尔的一生》随记
- win10问题:无任何操作,2分钟后电脑就自动休眠
- C++:继承
- CentOS 7.0 安装 ZCS 8.6.0
- Vim Vundle 插件管理器
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(5)——instanceof
- 94. Binary Tree Inorder Traversal
- AllJoyn核心应用教程【第二章】:代码结构与设备信息编写
- 移动数据和软件更新系统及方法
- 量子计算初识
- iOS 获取视频某一帧图像
- 设计模式-单态模式
- 结对编程黄金点游戏
- 今天上午一直在下雨,到了下午就没有下雨;
- webstorm快捷键大全
- 深度学习研究综述
- CentOS6.5 安装 Openresty
- 深入理解Linux字符设备驱动
- C# DataTable的Select()方法不支持 != 判断