Невозможно запустить программу обратной строки - PullRequest
0 голосов
/ 21 октября 2018

Я недавно начал изучать 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==!'\0')
  {
    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);
}

При отладке ошибки нет, однако при запуске программы я получаю неожиданное значение, а длина строки показывает ноль.Подскажите, пожалуйста, где я допустил ошибки.

Это то, что я получаю при запуске программы.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

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 ++.Теперь сравните с тем, что вы пытаетесь сделать, и я думаю, что это говорит само за себя.

0 голосов
/ 21 октября 2018
while ( counter == !'\0' ) { … }

Ну, !'\0' равно true, что как целое число равно 1.Таким образом, у вас есть while (counter == 1), и counter инициализируется в 0, что делает выражение немедленно false, поэтому цикл никогда не выполняется.

Вы, вероятно, намеревались написать != '\0'.Но это все еще проблема, поскольку counter начинается со значения 0, а 0 != 0 по-прежнему false и цикл не зацикливается.

Когда вы вводите Hey какВаша строка, символы H, e, y и \0 помещаются в переменную string.Вы хотите найти, где находится символ \0, который мы видим в string[3].Так почему вы сравниваете counter с '\0'?Может быть, вы хотите string[counter]?


Когда вы получите количество символов в Hey, которое равно 3, вы начнете обратный цикл, копируя \0 с индекса 3 в индекс 0 ... все 4 символа в обратном порядке: \0, y, e, H.К сожалению, \0 в начале будет отмечать конец строки, поэтому строка будет выглядеть пустой ..

...