|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.12.2008, 14:16 | #1 |
Новичок
Джуниор
Регистрация: 27.12.2008
Сообщений: 2
|
Буфер ввода и выделение памяти
Есть ли способ выделить память под указатель на char, ровно столько, сколько нужно (т.е. определить сколько ввёл пользователь в консоли символов, выделить память и записать в неё то, что ввёл пользователь). Я знаком лишь с другим методом: выделяю много памяти, считываю в неё, а потом (чтобы память не засирать) применяю string=realloc(string, strlen(string)), т.е. перевыделяю память, новая память не будет содержать пустого хвоста. Но все эти перевыделения - это действия, программа копирует строку в новое место, и стирает старое. Этот метод не выгоден по ресурсам. (это конечно смешые объёмы, но всё-же, хочется правильно писать проги).
Код:
Если непонятно, что я имел виду, то пояню: хочется просто записать то, что я ввёл с клавиатуры, в динамическую память ( назову этот указатель char *string), но при этом я хочу сразу выделить память под указатель ровно столько, сколько нужно, не больше. Я вот слышал, что всё, что я ввёл с клавиатуры записывается в буфер. Нельзя ли после нажатия enter прочесть буфер, и зная количесво символов выделить память и записать символы в эту память? Scanf и getchar выталкивают буфер, а есть ли функция, которая просто открывает консоль и пишет в буфер? Последний раз редактировалось Antolflash; 27.12.2008 в 14:25. |
27.12.2008, 22:20 | #2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Чтобы выделить ровно столько, сколько ввели, нужно сначала динамически выделить больше, потом считать сколько ввели. Выделить ровно столько памяти сколько введено, скопировать строку. Затем просто удалить первую строку. В итоге у вас памяти ровно столько, сколько нужно под строку.
И не парьте себе мозги с getchar() и прочей дребеденью. |
27.12.2008, 22:52 | #3 | |
Новичок
Джуниор
Регистрация: 27.12.2008
Сообщений: 2
|
Цитата:
Понимаете, если вы видите символы на экране, значит они содержатся в соответствующем файле, буфер уже выделен в stdio.h, вот только как добраться до него? Как после нажатия enter узнать количесво символов в буфере ввода, а затем выделить это кол-во памяти? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое выделение памяти | FW-TOT | Общие вопросы C/C++ | 2 | 19.12.2008 00:42 |
До выделение памяти | MAKTE | Общие вопросы C/C++ | 4 | 20.05.2008 21:34 |
Выделение памяти | antoha.by | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 29.04.2008 20:04 |
Выделение памяти в функции для переданных параметров | LinuxUser | Общие вопросы C/C++ | 1 | 12.11.2007 19:21 |
выделение оперативной памяти | Alar | Общие вопросы Delphi | 0 | 29.10.2006 21:56 |