Символ отсутствует на выходе массива - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь перевернуть эту строку, используя указатели и символы, но вывод, который я получаю, пропускает 2-й символ и не может найти причину.как в приведенном ниже случае, мне не хватает слова B.

#include <iostream>
#include <cstring>
#include <string>
using namespace std;


int main()
{

        int size = 100;
        char oldText[size];
        char newText[size];

        char *pntr;
        pntr = oldText;

        cout << "Write the Text: \n";
        for (int i=0; i<size; i++)
        {


            cin.get(pntr,size);
            newText[i]=*pntr;
            cout << *pntr;
            pntr++;
        }

        cout << "The text backwards is: \n";
        for (int i = size; i>=0; i--)
        {
            pntr--;
            cout <<newText[i];


        }
        cout <<endl;


    return 0;
}

Результат для вашей справки

1 Ответ

0 голосов
/ 14 февраля 2019

Этот код не является допустимым C ++.

int size = 100;
char oldText[size];
char newText[size];

Вы используете VLA, которые не являются допустимым кодом C ++.Прочитайте этот ответ для получения дополнительной информации https://stackoverflow.com/a/54674671/7185790.

Вместо этого вы можете квалифицировать int size с constexpr, и все будет в порядке.

constexpr int size = 10;

См. Следующий примерt использовать указатель на символ: https://rextester.com/AEULY24804

См. следующий пример, в котором используется указатель на символ: https://rextester.com/FNPW17676

...