字符串中单词的逆转,即将单词出现的顺序进行逆转。如将“Today is Friday!”逆转为“Friday! is Today”.

 #include<iostream>
#include<stdio.h>
void Reverse(char *pb,char *pe)
{
if(pb==NULL||pe==NULL)
return;
while(pb<pe)
{
char tmp=*pb;
*pb=*pe;
*pe=tmp;
pb++,pe--;
}
} char *ReverseSentence(char *pData)
{
if(pData==NULL)
return NULL;
char *pBegin=pData;
char *pEnd=pData;
while(*pEnd!='\0')
pEnd++;
pEnd--;
Reverse(pBegin,pEnd);
pBegin=pEnd=pData;
while(*pBegin!='\0')
{
if(*pBegin==' ')
{
pBegin++;
pEnd++;
continue;
}
else if(*pEnd==' '||*pEnd=='\0')
{
Reverse(pBegin,--pEnd);
pBegin=++pEnd;
}
else
pEnd++; }
// printf("%s",pData);
return pData;
} int main()
{
char str[]="Today is Friday!"; //在主函数中传入调用函数的值必须是字符数组类型的值
char *str1;              //而不能使指向字符串的指针,否则被调用函数无法访问字符串。
printf("源字符串为:%s\n",str);
str1=ReverseSentence(str);
while(str1!='\0')
{
std::cout<<*str1;
str1++;
}
// std::cout<<std::endl;
return ;
} 若指针指向一个字符串,这个字符串是保存在数据段常量区的,是不可以修改的。但我们可以让这个指针指向其他的字符串。

但是所示数组保存字符串的话,是存在栈区的,数组又是常量指针,即数组的这地址是不可以修改的,所以上面程序不会修改字符串的值。

要想字符指针像字符数组一样使用,需要提前申请相应的的内存空间,并在使用完以后对他进行释放。

最新文章

  1. Android消息机制
  2. jquery多次上传同一张图片
  3. 百度和google的区别
  4. javascript 如何访问 action或者controller 传给 jsp 页面的值
  5. 【剑指offer】递归循环两种方式反转链表
  6. extjs grid renderer用法【转载】
  7. 用FlexSlider制作支付宝2013版幻灯片演示插件
  8. TCP与UDP区别
  9. poj 2287 动态规划
  10. PHP - FTP上传文件类
  11. javascript 回调函数应用
  12. ios常见问题 经验之谈
  13. postman参数为Json数据结构
  14. django celery的分布式异步之路(二) 高并发
  15. TensoFlow实现条件语句
  16. [物理学与PDEs]第3章习题5 一维理想磁流体力学方程组的数学结构
  17. 前端学习 -- Css -- 有序列表和无序列表
  18. event对象在IE和firefox下兼容写法
  19. test20181015 B 君的第三题
  20. 使用matplotlib绘图(一)之折线图

热门文章

  1. Machine Schedule HDU1150
  2. php 会话控制(禁用cookie后session为什么会失效?)
  3. win10下 Jupyter Notebook不运行python 3怎么办?
  4. 为什么sql里面not in后面的子查询如果有记录为NULL的,主查询就查不到记录
  5. Android通知栏沉浸式/透明化完整解决方案
  6. Codeforces Round #501 (Div. 3) F. Bracket Substring
  7. codevs 2291 糖果堆
  8. iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them
  9. qunar-dns
  10. python dtrace 安装与应用