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 }

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

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

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

  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/mydomain/p/9612835.html
Copyright © 2011-2022 走看看