Вставка символа в заданную c позицию - PullRequest
0 голосов
/ 28 января 2020

Итак, я должен написать программу, которая добавляет символ в массив в указанной позиции c, принимая данные от пользователя. Например, массив: {'A', 'B', 'R', 'L', 'O', 'M', 'C'}, поэтому после вставки "M" в индекс 2 он должен стать {' А», 'В', 'М', 'R', 'L', 'О', 'М', 'C'}. Моя проблема в том, что мой код перезаписывает значение в индексе 2, следовательно, теряет его в процессе ..

Вот код:

    char array[20], insert, temp;
    int size = 10, index, count = 0;
    cout << "Enter characters : ";
    cin >> array;
    cout << "Enter a character you want to insert : ";
    cin >> insert;
    cout << "Enter index you want to insert in : ";
    cin >> index;
    for (int i = index; array[i] != '\0'; i++)
    {
      temp = array[index + 1];
      array[index] = insert;
    }

    for (int i = 0; array[i] != '\0'; i++)
    {
        cout << array[i] << " ";
    }

1 Ответ

4 голосов
/ 28 января 2020

Вы не должны использовать C -строки. Но более важно, что вы не должны использовать C -строки с std :: cin, потому что вы не можете ограничить количество символов, и ваша программа может вызвать переполнение буфера.

Вы должны использовать динамический c контейнер, такой как std :: string . В большинстве контейнеров предусмотрен метод, подобный std :: string :: insert для вставки элементов в заданную c позицию.

Знайте свои инструменты (алгоритмы) и не изобретайте колесо.

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::size_t;
using std::string;

int main()
{
    cout << "Enter characters : ";
    string array;
    cin >> array;
    cout << "Enter a character you want to insert : ";
    string insert;
    cin >> insert;
    cout << "Enter index you want to insert in : ";
    size_t index;
    cin >> index;
    array.insert(index, insert);
    for (const auto &c : array) {
        cout << c << " ";
    }
}
...