Возможно ли вводить строку неопределённой длины, используя динамическое выделение памяти? - C (СИ)
Формулировка задачи:
Здравствуйте, у меня вопрос. Возможно ли, вводить строку неопределённой длины, используя динамическое выделение памяти. Я читал про realloc, но как я понял, там процесс идёт с прерыванием. Т.е. после каждого слова происходит переход на новую строку. Спасибо
Решение задачи: «Возможно ли вводить строку неопределённой длины, используя динамическое выделение памяти?»
textual
Листинг программы
for(;(p=fgm(f))!=NULL; free(p)) {
....
}
Объяснение кода листинга программы
p- это указатель на блок памяти, который был выделен с помощью функцииfgm(f).fgm(f)- это функция, которая выделяет память динамически. Она возвращает указатель на выделенный блок памяти. Если память не может быть выделена, функция возвращаетNULL.free(p)- это функция, которая освобождает память, выделенную с помощьюfgm(f).- В цикле
forпроисходит повторение следующих действий до тех пор, покаpне станетNULL. - Внутри цикла выполняются действия, которые используют выделенный блок памяти.
- После завершения цикла, блок памяти освобождается с помощью
free(p). - После достижения конца цикла, значение
pстановитсяNULL, что означает, что память была успешно освобождена. - Цикл продолжается до тех пор, пока память не будет полностью освобождена.