2016-03-05 95 views
-2

我想要一个程序,以下面的格式反转给定的字符串。如=“这是一个小男孩” 然后我想输出反向螫如=“博亚SI ishT”与空间相反的空间维护

一个例子 假设如果我输入字符串 输入字符串=“如果” 输出String =“AF我“ 请帮忙。 我写了下面的程序,但没有按预期工作。

char string[] = "This is a boy\0"; 
char reverse[100] = {0}; 
int start = 0; 
int len = strlen(string)-1; 
int space= 0; 
bool flag = false; 
int count = 0; 
while(len >= 0) 
{ 

    if(string[len] == ' ' ) 
    { 
     len--; 
     flag = true; 

    } 

    if(flag && (string[len-1]) == ' ') 
    { 
     reverse[start] = string[len]; 

     reverse[++start] = ' ' ; 
     len--; 
     start++; 
     flag = false; 
     continue; 
    } 
    reverse[start] = string[len]; 
    flag = false; 
    start++; 
    len--; 
} 
+0

这是不是从你的例子要应用到字符串什么转型清楚。我认为你需要澄清一点。 – juanchopanza

回答

0

既然你有C++标签

#include <string> 
#include <algorithm> 
#include <iostream> 

std::string str = "This is a boy"; 
std::reverse(str.begin(), str.end()); 
std::cout << str; 

char str[] = "This is a boy"; 
std::reverse(str, str + strlen(str)); 
+0

这将不符合所需的奇怪输出。否则,这将是一个[这个副本](http://stackoverflow.com/questions/198199/how-do-you-reverse-a-string-in-place-in-c-or-c) – juanchopanza

+0

我的不好,我想解决我的例子,但我很困惑。在他的第一个输出中,他加入了最后2个字符串(并且不会使它们反转),而在他的第二个输出中,他分裂了if字并且不加入它们? wut o.o – Jts

+0

对,我无法弄清楚模式,如果有的话。所以OP需要澄清。 – juanchopanza