Задать вопрос
@mrFrip
Преодолеваю прокрастинацию

Каким образом задать динамический массив символов (строку) если не известен изначальный размер вводимой строки?

char str[100];
    scanf ("%s", &str);


Как указать str, если неизвестно изначально, какой длины будет вводимая строка?
пробовал через указатель, но не вышло.

Подскажите, пожалуйста!
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
15432
@15432
Системный программист ^_^
Только выделять динамически через malloc и считывать частями, перевыделяя память по достижении лимита.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
пробовал через указатель, но не вышло.

Что пробовал, как не вышло?
Ответ написан
Комментировать
@mrobespierre
если интерес академический, то как предложили коллеги: malloc/calloc
если надо чтобы работало, берите glib (не путать с glibc)
если надо чтобы работало, и glib не устраивает (тяжело себе представить такую ситуацию, но допустим), выделяйте больше, например [512], но считывайте в них только первые [500] (тож например), scanf так умеет. проверяйте сколько считалось: если ровно 500 - пользователь точно ввёл много и скорее всего всё не влезло, ругайтесь на него (скажите, что 256 было максимум) и считывайте опять. если же <500, то всё ок, можно работать. надеюсь понятно объяснил: главное - не считать данных больше, чем выделено места (избегнуть переполнения буфера)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы