c:翻转一个长句中的每个单词
问题:
输入:“how are you baby-- "
输出:”woh era uoy --ybab "
#include<stdio.h> #include<string.h> #define SWAP(a,b) (a)^=(b);(b)^=(a);(a)^=(b)char* sentenceReverse(char* input){if(NULL == input) return;char *r,*f;char *inp = (char*)malloc(sizeof(char)*(strlen(input)+1));//当input是const时其内容不能修改,此时需要在堆上new一个新数组; strcpy(inp,input);r=f=inp;printf("input is:%s-----\n",inp);char *rear,*front;//用于标记一个单词的词首和词尾while(*r){while(*r==' ') r++;f=r;while(*r!=' ' && *r!='\0') r++;r--;front=f;rear=r;while(rear > front){//翻转一个单词SWAP(*rear,*front);front++;rear--;}if(*(++r)=='\0') break;}return inp; }int main(){char test1[]="1oow lsije ";char *test2="sdklf ";char *ret2;printf("test1 result is:%s-----\n",ret2=sentenceReverse(test1));printf("test2 result is:%s-----\n",sentenceReverse(test2));free(ret2);//free掉malloc开辟的空间return 0; }
输出结果:
xu@xu-ThinkPad-X61:~/algorithm$ gcc sentenceReverse.c
xu@xu-ThinkPad-X61:~/algorithm$ ./a.out
input is:1oow lsije -----
test1 result is:woo1 ejisl -----
input is:sdklf -----
test2 result is:flkds -----
总结:
一,当函数参数是test2时(注意它声明时是char * 类型),内存做了以下操作:1.在堆上保存test2指针。2.将其内容:"sdklf "保存在“常量区”(具体我也不清楚,反正该区域内容不能修改)。找到下面连接,问题解释的比较清晰:
http://blog.chinaunix.net/uid-26456800-id-3262510.html
二,当函数sentenceReverse()对数组char *test2内容修改时,总会报错“
段错误 (核心已转储)”。
三,解决方案:在堆上重新开辟新空间进行操作。如上函数中新建数组inp[ ];
四,当函数参数是test1时(注意是它声明时是char [ ]类型)就不存在内存“段错误”问题。其内容存储在堆上可以直接修改。
深藏功与名!
转载于:https://www.cnblogs.com/McQueen1987/p/3546729.html
c:翻转一个长句中的每个单词相关推荐
- 算法:一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度
一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度. 如:uyuy 11 ikkhkhkhk kkj,结果:9 最暴力方案1(没分,只能用于验证其他方案结果正确性): public s ...
- NLP之Bi-LSTM(在长句中预测下一个单词)
Bi-LSTM 文章目录 Bi-LSTM 1.理论 1.1 基本模型 1.2 Bi-LSTM的特点 2.实验 2.1 实验步骤 2.2 实验模型 1.理论 1.1 基本模型 Bi-LSTM模型分为2个 ...
- CV2视频剪辑,从一个长视频中截取多个视频片段
前言 最近在项目中遇到了这样一个需求,要求读取视频,根据视频帧数剪辑出多个时长相对固定的视频片段(如第100.575.920帧的前后50帧).该需求通过cv2实现,前后大约修改过三次:1.第一种方法是 ...
- 《大明宫词》经典台词89句——欧式长句中的东方古典
1,长安细雨,沐浴着太平:大明宫景,多少宿命.回首遥望苍穹下,世事浮沉,无常无情:终我一生,难寻太平. 2.一连数月的大雨将大明宫浸泡得仿佛失去了根基,甚至连人们的表情也因为多日未见阳光而日显苍凉伤感 ...
- 英语长句中的断句问题
美音听力与发音技巧10:断句的区别 时间:2010-04-18 16:37来源: 作者: 点击: 3次 (断句) Welcome to Daily Tips on Learning English. ...
- python输入一个英文句子、统计单词个数_C语言编程求一个英文句子中的单词数和最长单词的位置、长度及输出这个单词。c++编程 从键盘输入一个英文...
C语言编程求一个英文句子中的单词数和最长单词的位置.长度及输出这个单词. c++编程 从键盘输入一个英文 www.zhiqu.org 时间: 2020-11-23 我刚做了一关于英文句子里面每 ...
- 【C语言数组题】编写程序查找一个英文句子中所有的最长的单词
[代码] #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 200 void ...
- 介词 + 宾语构成介宾,在句中作状语,表语,补语或宾语
grammer 其实就是英语在表述中遵循的一种逻辑性的游戏规则:进而让听者知道说者的用义,最终的目的不是什么丰富而眩目的各种词性.句式,而是用义. 1. 举例 来看一个长句,介词+宾语作补语的例子: ...
- jieba分词_wordcloud词云美化——jieba结巴中文分词(将长句拆分)
大家好,上一篇文章<五行代码上手WordCloud词云--用一个重复的单词做一个单词云>已经带大家初步认识了词云的基本制作流程,本节教大家如何对长句进行拆分制作词云: 首先我们来了解这张图 ...
最新文章
- java 创建servlet_javaweb02-创建第一个Servlet
- java 创建日程到期提醒_苹果“快捷指令”日程播报完美版
- 基于hexo搭建个人免费博客——基本设置和了解
- 你真的了解 timeout 吗?
- 微信支付开发(2) 扫码支付模式一
- mysql 内置存储过程_mysql 内置存储过程
- tomcat 不支持put 高版本_Tomcat-远程代码执行漏洞
- Lightbox插件
- 【Tomcat】修改密码
- Heka GeoIpDecoder 配置
- 蓝牙5.3 Core Spec演进与功能变化
- U3D教程宝典之两步实现超实用的XML存档
- Delphi with Lua5.1.3
- 镂空三角形(for循环找规律)
- Android城市列表
- 【SAS应用统计分析】软件的基本操及SAS数据集的整理
- jvm原理解析--不疯魔不成活
- linux ftp服务器配置本地账号,CentOS7 下安装和配置本地用户登录VSFTP服务器
- 【日常】某B视频网站模拟登录尝试
- 【运筹学】产销平衡下的运输问题概念理解(4月9日学习笔记)
热门文章
- java的程序编码,JAVA编码转换的详细过程
- python 流写入文件_Python数据流写入文件
- 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降
- 文字虚线怎么去掉_PS十秒钟更改图片上的文字?没问题!这个小技巧你轻松get到手「16期」...
- 质量属性效用树_知识之森-数据化你的quot;知识树”
- 嵌入式系统——专业英语
- linux 邮件服务器 并给外网发送邮件,Linux下判断公网IP是否改变,并发送邮件通知...
- mysql5.0查询表_Mysql5.0查询表结构 | 学步园
- PAT (Basic Level) Practice1028 人口普查
- git pull命令报错