问题:

输入:“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)+));
//当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 ;
}

输出结果:

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 [ ]类型)就不存在内存“段错误”问题。其内容存储在堆上可以直接修改。

深藏功与名!

c:翻转一个长句中的每个单词的更多相关文章

  1. 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个 ...

  2. js实现一个长页面中的图片懒加载即滚动到其位置才加载

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. java遍历统计一个文件夹中所有文件单词出现次数

    思路就是通过递归进行文件遍历,把所有文件夹中的非目录文件都遍历一遍,并判断其中读取到的字符串是不是单词,并对单词进行记录和计数,并在最后进行排序输出,下面是代码: package word; impo ...

  4. Frogger POJ - 2253(求两个石头之间”所有通路中最长边中“的最小边)

    题意 ​ 题目主要说的是,有两只青蛙,在两个石头上,他们之间也有一些石头,一只青蛙要想到达另一只青蛙所在地方,必须跳在石头上.题目中给出了两只青蛙的初始位置,以及剩余石头的位置,问一只青蛙到达另一只青 ...

  5. 经典算法面试题目-翻转一个C风格的字符串(1.2)

    题目: Write code to reverse a C-Style String. (C-String means that "abcd" is represented as ...

  6. 解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据

    我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据.好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的动 ...

  7. Android TV开发总结(七)构建一个TV app中的剧集列表控件

    原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ...

  8. 一个在开源中国博客上讲解的AC自动机

    原文出处:http://my.oschina.net/amince/blog/196426 原 荐 AC(Aho—Corasiek) 多模式匹配算法 摘要 如何在一篇文章中,搜索多个关键字,如何快速查 ...

  9. c语言经典算法——查找一个整数数组中第二大数

    题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...

随机推荐

  1. oracle_constraint的用处

    ql中constraint主要是增加约束 这个主要就是增加约束的 以下几种约束 .并 一一列举: 1.主键约束: 主键约束:就是对一个列进行了约束,约束为(非空.不重复)要对一个列加主键约束的话,这列 ...

  2. c# 字符串切割 split

    一直以来  都以为 string.split 里面 就只能是 一个 char 实际不是 那么回事 参数 可以是 string. eg: string strtest = "asdfg12we ...

  3. 代理模式与Android

    代理模式(Proxy) 一.   什么是代理模式 先来看看官方的说法,代理模式就是为其它对象提供一种代理,以控制对这个对象的訪问. 看来这个官方的说法的确有点官方,看了还是让人感觉不点不知所措,还是不 ...

  4. MVC应用程序使用Wcf Service

    原文:MVC应用程序使用Wcf Service 前一篇Insus.NET有演示过MVC应用程序使用Web Service, 此篇Insus.NET想继续演示Service,不过是WCF Service ...

  5. Java遍历解析URL类型字符串中参数

    public static void main(String[] args) { String str="&emailCheckURL=447&useremail=vip@c ...

  6. NGUI ScrollView动态加入和删除对象。

    动态加入,基本思想是: 1.先把要加入的元素在编辑器中编辑好,制作成一个prefab. 2.在代码中,动态的生成一个新的对象增加到Grid对象的子对象中.这里利用到了Resources对象,这个对象的 ...

  7. phpStorm+XDebug+chrome 配置

    运行环境: phpStorm 10.0.1 PHP 5.6.24 VC11 x86 Thread Safe Xdebug 2.4.1(PHP 5.6 VC11 TS (32 bit) 1. PHP安装 ...

  8. 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

    原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...

  9. Ping域名惊现65.49.2.178

    --- 昨天新建的博,早晨起来进去看看,发现无法访问.这… 排错开始,ping域名出现如上图所示结果,请求超时…哪里的问题呢 有时常识是害人的,想起了前两月群里也有人说本地无法访问自己网站,别人能访问 ...

  10. leetcode第三题--Longest Substring Without Repeating Characters

    Problem:Given a string, find the length of the longest substring without repeating characters. For e ...