输入一行字符串,把字符串翻转[单词顺序不变]
2016-01-07 14:24
399 查看
输入一行字符串,把字符串翻转 。
例如:
Input: I____am__a__student
Output: student__a__am____I
(__代表空格)
例如:
Input: I____am__a__student
Output: student__a__am____I
(__代表空格)
#include<stdio.h> #include<stdlib.h> void my_reverse(char *left, char * right) { //assert(left); //assert(right); 用以处理指针函数为空,保证有效 while (left < right) { char tmp = *left; //借助中间变量实现逆置 *left = *right; *right = tmp; left++; right--; } } int my_strlen(char *str)//得到数组长度定义求取字符串长度的函数 { int count = 0; while (*str++) { count++; } return count; //返回count指向int型的具体值 } void reverse(char arr[]) //char *arr { char *pstart = arr; char *pend = arr + my_strlen(arr) - 1; //注意数组从0开始 char *pcur = NULL; if ((arr == NULL) || (arr[0] == '\0')) //空数组或数组结束,不处理 { return; } my_reverse(pstart, pend); //逆置整个数组 while (*arr)//不为NULL,为‘\0’的情况 { pcur = arr; //数组开始地址 while (*arr != '\0' && *arr != ' ') //在单词内部时 { arr++; } pend = arr - 1; //退一位 my_reverse(pcur, pend); //逆置遇到空格的单词 if (*arr == ' ') //说明后面还有单词 { arr++; } } } int main() { char arr[100]; gets(arr); //先将字符串逆置,再遇到空格处将该单词逆置即可 reverse(arr); printf("%s\n", arr); system("pause"); return 0; }
相关文章推荐
- web 前端资料
- 5.UITableView基本使用
- 蓝牙代理报错:invalid handle error
- MFC列表控件更改一行的字体颜色
- SHELL变量的几个小题目
- iis的错误页设置不显示详细信息
- VIM入门
- HttpUploader6-queue版本更新说明
- MQTT——java简单测试(二)
- 网易前端JavaScript编码规范【转】
- [AnyDAC][Phys][ODBC][Microsoft][ODBC 驱动管理器]在指定的DSN中,驱动程序和应用程序体系结构不
- 5.1.2. Using Lists as Queues(像队列一样)
- Centos7下openresty自启动配置
- lambda内容的介绍
- bug系列-------sn序列号在烧img之后被损坏
- 判断计算机是大端还是小端
- 指针数组与数组指针的区别
- 配置Eclipse支持java和xml文件的代码补全功能
- 【TCP/IP】C语言实现Ping小程序
- upload.parseRequest(request) 结果为null的一个恶心处理法