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 }

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

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

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

  • 相关阅读:
    Eclipse 开发过程中利用 JavaRebel 提高效率
    数字转化为大写中文
    网页变灰
    解决QQ截图无法在PS中粘贴
    ORACLE操作表时”资源正忙,需指定nowait"的解锁方法
    网页常用代码
    SQL Server 2000 删除注册的服务器
    GridView 显示序号
    读取Excel数据到DataTable
    清除SVN版本控制
  • 原文地址:https://www.cnblogs.com/mydomain/p/9612835.html
Copyright © 2011-2022 走看看