Как ввести строку неизвестной длины с консоли на с++ без использования 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;
}
Разжевывать не надо? :)