zoukankan      html  css  js  c++  java
  • 字符串中单词的逆转,即将单词出现的顺序进行逆转。如将“Today is Friday!”逆转为“Friday! is Today”.

      字符串中单词的逆转,即将单词出现的顺序进行逆转。如将“Today is Friday!”逆转为“Friday! is Today”.
     48 
     49 #include<iostream>
     50 #include<stdio.h>
     51 void Reverse(char *pb,char *pe)
     52 {
     53     if(pb==NULL||pe==NULL)
     54         return;
     55     while(pb<pe)
     56     {
     57         char tmp=*pb;
     58         *pb=*pe;
     59         *pe=tmp;
     60         pb++,pe--;
     61     }
     62 }
     63 
     64 char *ReverseSentence(char *pData)
     65 {
     66     if(pData==NULL)
     67         return NULL;
     68     char *pBegin=pData;
     69     char *pEnd=pData;
     70     while(*pEnd!='')
     71         pEnd++;
     72     pEnd--;
     73     Reverse(pBegin,pEnd);
     74     pBegin=pEnd=pData;
     75     while(*pBegin!='')
     76     {
     77         if(*pBegin==' ')
     78         {
     79             pBegin++;
     80             pEnd++;
     81             continue;
     82         }
     83         else if(*pEnd==' '||*pEnd=='')
     84         {
     85             Reverse(pBegin,--pEnd);
     86             pBegin=++pEnd;
     87         }
     88         else
     89             pEnd++;
     90 
     91     }    
     92 //    printf("%s",pData);
     93     return pData;
     94 }
     95 
     96 int main()
     97 {
     98     char str[]="Today is Friday!";  //在主函数中传入调用函数的值必须是字符数组类型的值
     99     char *str1;              //而不能使指向字符串的指针,否则被调用函数无法访问字符串。
    100     printf("源字符串为:%s
    ",str);
    101 str1=ReverseSentence(str);
    102     while(str1!='')
    103     {
    104         std::cout<<*str1;
    105         str1++;
    106     }
    107 //    std::cout<<std::endl;
    108     return 0;
    109 }

    若指针指向一个字符串,这个字符串是保存在数据段常量区的,是不可以修改的。但我们可以让这个指针指向其他的字符串。

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

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

  • 相关阅读:
    设计模式学习笔记之一:策略模式
    向上转型和向下转型
    html readonly和disabled的区别
    如何自定义JSR-303标准的validator
    vue 组件属性props,特性驼峰命名,连接线使用
    laydate中设置动态改变max与min值的方法
    浅谈JS中 reduce() 的用法
    jq 实时监听input输入框的变化
    npm install --save 和 npm install -d的区别
    vue中html、js、vue文件之间的简单引用与关系
  • 原文地址:https://www.cnblogs.com/mydomain/p/9612835.html
Copyright © 2011-2022 走看看