-1

Программа которая заменяет каждую букву в тексте на букву которая идет после нее в алфавите через n символов. При компиляции выдает ошибку невозможно преобразовать const char * в char* (ругается на input_text)

#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
    char *input_text;
    char *output_text;
    input_text = "bla bla";
    int n = 5;
    int count = 0;
    for (int i = 0; input_text[i] != 0; i++)
    {
        count++;
    }
    int input_text_lenght = count;
    output_text = new char[input_text_lenght];
    for (int k = 0; k < input_text_lenght; k++)
    {
        output_text[k] = input_text[k] + n;
    }
    cout << "input_text ... " << input_text << endl;

    cout << "output_text ... " << output_text << endl;
    delete[] output_text;
    return 0;
}
Alex
  • 57
  • Не "const char в char", а "const char * в char *" в строчке input_text = "bla bla";. Разумеется, невозможно. Компилятор все правильно сказал. Учитесь пользоваться const. – AnT stands with Russia Oct 31 '18 at 18:43
  • @AnT, да вы правы. Не подскажете где ошибка в программе, ибо на выходе получается output_text ... gqf%gqf¤¤¤¤▌▌▌▌▌┴╤.▌. А должны просто символы на следующие поменяться – Alex Oct 31 '18 at 18:51
  • 1
    У вас нет замыкающего \0 в строке-результате. Вы даже памяти для него не выделили. – AnT stands with Russia Oct 31 '18 at 18:51
  • Да, нету, но если добавить то все равно почему-то дописывает лишние символы в результате – Alex Oct 31 '18 at 18:56
  • Так не бывает. Нам отсюда не видно что вы там и как "добавили". Видимо, неправильно добавили. – AnT stands with Russia Oct 31 '18 at 19:04
  • Извиняюсь, а куда правильно добавить замыкающие \0 – Alex Oct 31 '18 at 19:25
  • Последним символом в строке output_text должен быть \0. В конец строки добавить - потому он и называется "замыкающим". – AnT stands with Russia Oct 31 '18 at 19:29
  • Подскажите, как добавить этот символ в конец? – Alex Oct 31 '18 at 19:59
  • @AnT, все разобрался, спасибо – Alex Oct 31 '18 at 20:12
  • В общем-то это против правил использования данного языка (С++), но если очень хочется (или просто в самом деле надо в какой-то ситуации), то поможет простейшее приведение типа input_text = (char *)"bla-bla-..."; (с таким компилятор соглашается) – avp Oct 31 '18 at 20:27

1 Answers1

1
char *input_text;
const char *input_text;
Qwertiy
  • 123,725