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 }

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

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

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

  • 相关阅读:
    多叉树
    PowerDesigner设置集锦(2)
    Delphi应用程序在命令行下带参数执行返回命令行提示的问题
    不允许在 '*******' 上使用扩展属性,或对象不存在
    仓库管理系统开发完成
    动态创建Frame窗体(根据类名,除T以外的字母)
    Access中的常用TSQL
    批量删除同类文件(带通配符)
    判断Access数据库中的表或查询是否存在的SQL
    序列化FastReport,重要提示少走弯路
  • 原文地址:https://www.cnblogs.com/mydomain/p/9612835.html
Copyright © 2011-2022 走看看