Вопрос по изменению строки - PullRequest
       6

Вопрос по изменению строки

1 голос
/ 18 сентября 2011

Я получаю следующий вывод: olleh�hello, но не могу понять, где я иду не так!

 int main()
    {

       char hello[6] = "hello";
       char temp[6]; 
       unsigned int t = 0;
       for(int i=strlen(hello)-1;i>=0;i--)
       {
       if(t<strlen(hello))
        {
          temp[t] = hello[i];
          t++;
        }
      }
      cout << temp;
      return 0;
    }

Ответы [ 3 ]

7 голосов
/ 18 сентября 2011

вы пометили вопрос как [C ++], так что C ++ способ перевернуть строку:

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

int main()
{
    std::string hello = "hello";
    std::reverse(hello.begin(), hello.end());
    std::cout << hello << std::endl;
}

здесь сложно ошибиться

7 голосов
/ 18 сентября 2011

Вам нужен нулевой терминатор в конце строки:

int main()
{

   char hello[6] = "hello";
   char temp[6]; 
   unsigned int t = 0;
   for(int i=strlen(hello)-1;i>=0;i--)
   {
   if(t<strlen(hello))
    {
      temp[t] = hello[i];
      t++;
    }
  }
  temp[t] = '\0';
  cout << temp;
  return 0;
}
3 голосов
/ 18 сентября 2011

Вы не завершаете temp нулем (\0), поэтому temp не является допустимой строкой и cout не знает, что с ней делать.Ваша проблема исчезнет, ​​если вы добавите:

temp[5] = 0;

после цикла for.

...