Как ввести строку неизвестной длины с консоли на с++ без использования string?

Нужно написать программу,которая читает с консоли строку(которая может быть большого размера) и избавляется от определенных букв.Как это сделать без использования string?


Ответы (2 шт):

Автор решения: Vladimir Meshcherekov

Можно создать массив равный длине строки и хранить в каждой ячейке acsii коды вводимого символа

UPD: если возможно, используй вектора https://code-live.ru/post/cpp-vector/#_1

если нет, можешь попробовать для добавления каждого нового элемента динамически создавать новый массив с n+1 элементов (где n - кол-ов элементов предыдущего массива) https://ravesli.com/urok-86-dinamicheskie-massivy/#toc-3

→ Ссылка
Автор решения: Harry

Поскольку в С++ такое не нужно, решение C'шное:

char * readLine()
{
    int size = 0, capacity = 16, ch;
    char * buf = malloc(sizeof(char)*capacity);
    for(ch = fgetc(stdin); ch != EOF && ch != '\n'; ch = fgetc(stdin))
    {
        if (size >= capacity - 1)
        {
            capacity *= 2;
            char * tmp = realloc(buf,sizeof(char)*capacity);
            if (tmp == NULL) { buf[size] = 0; return buf; }
            buf = tmp;
        }
        buf[size++] = ch;
    }
    buf[size] = 0;
    return buf;
}

Разжевывать не надо? :)

→ Ссылка