@Borton1

Как создать указатель на вводимый текст?

Здравствуйте! скажите, пожалуйста, есть задание нужно считать вводимое предложение с консоли, но длина текста и каждого предложения заранее не известна. Тут дело с динамическим выделением памяти. Но вот это текст что считали, на него нужно создать указатель типа такого char *s. Пытался не получается( хэлп
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Ну и покажите что вы пытались сделать.

Вообще текст куда-то должен попасть после ввода. Для этого функции чтения вы должны дать буфер, куда она и запишет, все что прочитала.

В типичной ситуации, когда не известно сколько данных будет введено, вы выделяете буфер некоторого размера (1Кб например), вызываете функцию чтения с этим буфером. Если функция полностью забила весь буфер и еще хочет - выделяете буфер большего размера, копируете содержимое предыдущего буфера, предыдущий буфер удаляете. Снова вызываете функцию чтения со смещением в новом буфере. И так пока не прочитаются все данные.
Если же введенные данные должны быть как-то обработаны, то обычно все что прочиталось сразу обрабатывается, после обработки буфер обычно пустой (или заполнен остатками не обработанных данных, которые надо дополнить) и читаете снова в тот же буфер.

Когда вы выделите буфер (с помощью malloc например), вы получите указатель. Пока этот указатель указывает на "пустой" буфер. После чтения в буфер, указатель будет указывать на прочтенные данные. Функция чтения вернет вам еще и длину прочитанных данных. Этого достаточно для дальнейшей работы с буфером.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Заводим переменную типа char *
Берем в нее память килобайт 10, зануляем
Считали текст, сдвинули указатель, запомнили
(повторять, пока есть текст)
По завершению - массив текста и массив указателей, указывающих на начало каждой строки
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы