无法 运行 反转字符串程序

Unable to run reverse string program

我最近开始学习C++,写了几行接受一个字符串,显示其中的字符数,还显示输入字符串的反转。这是我写的。

#include <iostream>

int main()

{
  char string[25],rev_string[25];
  int counter=0,length=0;

  std::cout << "\n Enter the string : ";
  std::cin >> string;

  while(counter==!'[=11=]')
  {
    counter=counter+1;
    length=length+1;
  }
  counter=0;

  std::cout << "The string has "<<length<<" characters in it.";
  while(length>=0)
  {
    rev_string[counter]=string[length];
    counter=counter+1;
    length=length-1;
  }

  std::cout << "\n The reverse of the given string is : "<<rev_string;

  return(0);
}

调试时没有错误,但是当我运行程序时,我得到了一些意想不到的值,字符串长度显示为零。能否请您指出我哪里有错误。

这是我 运行 程序时得到的结果。

while ( counter == !'[=10=]' ) { … }

嗯,!'[=11=]'true,整数是 1。所以你有 while (counter == 1)counter 被初始化为 0,使表达式立即 false,所以循环永远不会执行。

您可能打算写 != '[=18=]'。但这仍然是一个问题,因为 counter 以值 0 开始,而 0 != 0 仍然是 false 并且循环不会循环。

当您输入 Hey 作为您的字符串时,字符 Hey[=27=] 将放置在 string 变量。你想找到那个 [=27=] 字符在哪里,我们看到它在 string[3]。那你为什么要比较 counter'[=32=]'?也许你想要 string[counter]?


当您获得 Hey 中的字符数时,即 3,您开始反向循环将索引 3 处的 [=27=] 复制到索引 0 。 .. 所有 4 个字符的顺序相反:[=27=]yeH。不幸的是,开头的 [=27=] 将标记字符串的结尾,因此字符串将显示为空..

C++如果像C一样学习是很难学的。而且你还会养成一些丑陋的习惯。请学习和练习C++。

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

int main()
{
    std::string s;
    std::cin >> s;

    std::cout << "number of characters: " << s.size() << std::endl;

    std::reverse(s.begin(), s.end());
    std::cout << "reverse string: " << s << std::endl;
}

这就是您用 C++ 编写问题的方式。现在与您正在尝试做的事情进行比较,我认为它不言自明。