如何在 C++ 中反转字符数组? [关闭]

Posted

技术标签:

【中文标题】如何在 C++ 中反转字符数组? [关闭]【英文标题】:How to reverse a character array in c++? [closed] 【发布时间】:2013-03-29 22:29:20 【问题描述】:

我们的老师希望我们编写一个反转字符数组顺序的程序。所以就像如果用户输入“hello”,程序会输出“olleh”。

这是我们得到的功能:

void reverse_string(char coolstring[11], char newcoolstring[11])

    int count = 0, count2 = 0;

    while(coolstring[count] != '\0')
    
        count++;
    
    count -= 1;

    cout << coolstring[count];
    system("pause");

    while(coolstring[count] != 0)
    
        newcoolstring[count] = coolstring[count2];
        count -= 1;
        count2 += 1;
       

但它不起作用,我在尝试使其起作用时无法找出原因。你能给我指出正确的方向吗?

任何帮助将不胜感激

【问题讨论】:

“它不起作用”不是对问题的有用描述。 那是你老师给你的代码,你的代码在哪里?你试过什么? 她故意给你非工作代码。你不应该弄清楚如何解决它吗? 【参考方案1】:

这是您应该自己解决的问题,但这里有一些可以为您指明正确方向的问题:

假设coolstring 看起来像这样:

 0  |  1  |  2  |  3  |  4  |  5
'h' | 'e' | 'l' | 'l' | 'o' | '\0'

此循环将检索此字符串的大小:

while(coolstring[count] != '\0')
    count++;

但是由于您想使用 count 作为索引并且在这种情况下 count 等于 5,您不想复制终止 ('\0') 字符,因此您应该以 coolstring[4] 开头首先(这是在countwhile 循环之后递减之后输出coolstring[count] 的目的......让你意识到它是'o')。

现在看看这段代码:

while(coolstring[count] != '\0')

    newcoolstring[count] = coolstring[count2];
    count--;
    count2++;
 

问自己这些问题:

    当我们以'o' 开始并递减count 时,coolstring[count] 何时会等于'\0'newcoolstring 将如何处理此循环?

【讨论】:

【参考方案2】:

我认为我们需要更具体地描述它是如何不起作用的。你尝试了哪些输入,你得到了什么样的错误行为?

仅从您的示例来看,错误可能是您只能显示原始字符串的最后一个字母。那是因为您有一个 cout 语句来执行此操作,就在 system("pause") 行之前。您是否在其他任何地方显示输出字符串?

【讨论】:

以上是关于如何在 C++ 中反转字符数组? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

不反转数字的字符反转[关闭]

如何在 C++ 中将数组 char 复制到字符串或 int* (void *) 中? [关闭]

如何反转字符串数组并使用指针反转每个字符串?

反转字符串C++ [关闭]

如何将字符串转换为字节数组? [关闭]

翻转字符串(C++)