运维开发网

用C++实现,将一句话里的单词进行倒置的方法详解

运维开发网 https://www.qedev.com 2020-02-13 12:51 出处:网络 作者: 网络整理
本篇文章是对用C++实现,将一句话里的单词进行倒置的方法进行了详细的分析介绍,需要的朋友参考下
用C++语言实现,将一句话中的单词进行倒置(单词之间倒转,单词本身不倒置),标点符号不导致。比如一句话“I come from tianjin. “,倒置后变成“tianjin. from come I ”。

C常见的库函数有:

复制代码 代码如下:

int  strstr(const char* string,const char* substring)   用于返回主串中子串的位置以后的所有字符。比如主串是“123456789”,子串是“234”,则返回“23456789”。

char*   strcpy(char* DestStr,const char* SrcStr)   复制字符串函数  

int    strcmp(const char* str1,const char* str2)    比较两个字符串  

char*  strcat(char* destStr,const char* srcStr)      连接字符串  

没有太合适题意的库函数,因此想办法不用库函数,自己进行倒置。下面的是自己的实现,不足之处,还望指正!!!

复制代码 代码如下:

#include "stdafx.h"

#include <iostream>

using namespace std;

char *strReverse(char * sourcestr)

{

 int j = 0, i = 0,begin,end;

 char *str = sourcestr;

 char temp;

 j = strlen(str) - 1;

 cout << " string = " << str << endl;

 //先将字符串进行全部倒转 变成 .nijnaiT morf emoc I

 while (j > i)

 {

  temp = str[i];

  str[i] = str[j];

  str[j] = temp;

  j --;

  i ++;

 }

 cout << " string = " << str << endl;

 //然后进行按单词部分反转,遇到空格,则判断出一个单词结束

 i = 0;

 while (str[i])

 {

  if (str[i] != ' ')

  {

   begin = i;

   while (str[i] && str[i] != ' ')

   {

    end = i;

    i++;

   }

   if (str[i] == '\0') //字符串的结束符

   {

    i--;

   }

  }

  while (end > begin)

  {

   temp = str[begin];

   str[begin] = str[end];

   str[end] = temp;

   end --;

   begin ++;

  }

  i ++;

 }

 cout << " string = " << str << endl;

 return str;

}

int _tmain(int argc, _TCHAR* argv[])

{

 char str[] = "I come from Tianjin.";

 strReverse(str);

 return 0;

}

0

精彩评论

暂无评论...
验证码 换一张
取 消