Форум программистов, компьютерный форум CyberForum.ru

Вопрос о динамическом выделении памяти для строки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
22.01.2009, 20:24     Вопрос о динамическом выделении памяти для строки #1
Как можно реализовать динамическое выделение для строки, т.е. например у меян есть указатель - char *c. Мне необходимо ввести строку с клавиатуры, выделить для нее память через указатель с и занести ее в эту память. Как это можно реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2009, 20:24     Вопрос о динамическом выделении памяти для строки
Посмотрите здесь:

C++ Вопрос о динамическом выделении памяти
Немного о динамическом выделении памяти ... C++
Что происходит за кулисами при выделении памяти для переменной? C++
C++ Ошибка на динамическом выделении памяти
C++ Ошибка при динамическом выделении памяти
Выравнивание при динамическом выделении памяти под массив C++
Ошибка при выделении памяти динамически для структуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
22.01.2009, 20:30     Вопрос о динамическом выделении памяти для строки #2
выдели дин. память для символьного массива

Добавлено через 1 минуту 14 секунд
char* array = new char[размер массива];
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
22.01.2009, 20:37  [ТС]     Вопрос о динамическом выделении памяти для строки #3
Я ведь не знаю еще размер строки, которую введут. Как я могу выделить память?
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
22.01.2009, 20:41     Вопрос о динамическом выделении памяти для строки #4
запроси у пользователя
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
22.01.2009, 20:46  [ТС]     Вопрос о динамическом выделении памяти для строки #5
Нее... Это неинтересно.
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
22.01.2009, 20:52     Вопрос о динамическом выделении памяти для строки #6
ну тогда используй string
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
22.01.2009, 21:11  [ТС]     Вопрос о динамическом выделении памяти для строки #7
Конкретный ответ есть?
Бартимеус
 Аватар для Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
22.01.2009, 21:15     Вопрос о динамическом выделении памяти для строки #8
Цитата Сообщение от Del_Piero_10 Посмотреть сообщение
Конкретный ответ есть?
а чем этот не устраивает? подключи <string> и юзай
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
22.01.2009, 21:30  [ТС]     Вопрос о динамическом выделении памяти для строки #9
Блиин... В обще нужна символьная строка. Я вроде дал толковое определение того, что меня интересует. Жду еще овтетов.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.01.2009, 21:42     Вопрос о динамическом выделении памяти для строки #10
Ты не можешь определить размер того, чего у тебя еще нет. Твоя прога не прочитала строку? Нет. Вот и не пытайся узнать размер того, о существовании чего твоя прога еще даже не знает.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.01.2009, 23:41     Вопрос о динамическом выделении памяти для строки #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXLINE  1000   /* максимальная длина строки */
 
/* выделяет память для введённой строки */
main()
{
    char *s;
    unsigned len;
    
    if ((s = (char *) malloc(MAXLINE)) == NULL)
        return 1;
    if (fgets(s, MAXLINE, stdin) == NULL) {
        free((void *) s);
        return 2;
    }    
    if ((len = strlen(s)) < MAXLINE-1)
        if (realloc((void *) s, len+1) == NULL) {
            free((void *) s);
            return 3;
        }
    printf("%s", s);
    free((void *) s);
    return 0;    
}
суть в том, что сначала записываешь её в большой массив а потом его ужимаешь
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.01.2009, 23:46     Вопрос о динамическом выделении памяти для строки #12
accept, он же ясно написал, что ему не нужен большой массив. а выделение памяти под точное число символов в строке. это не решение.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.01.2009, 00:27     Вопрос о динамическом выделении памяти для строки #13
в итоге остаётся выделенная память под точное число символов в строке там realloc
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.01.2009, 00:33     Вопрос о динамическом выделении памяти для строки #14
Цитата Сообщение от accept Посмотреть сообщение
в итоге остаётся выделенная память под точное число символов в строке там realloc
Блин, да понимаю я это. Но это не решение поставленной задачи.
Тебе по слогам формулировать то, что людям нужно?
Человек хочет выделить память под строку по ее длине сразу же. Не используя левых выделений, реалоков и т. д..
Описываю:
1. пользователь ввел на терминал строку
2. прога определила длину введенной строки
3. выделила память по длине.
4. считала строку с терминала в этот буфер.
Вроде, я верно понял.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.01.2009, 01:01     Вопрос о динамическом выделении памяти для строки #15
я сделал так чтобы у него память тратилась только под строку, получилась буферизация внутри программы, а ты предлагаешь использовать внешнюю буферизацию, итого получается зависимость от внешней буферизации (получение доступа к внешнему буферу куда строка записалась может варьироваться)
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.01.2009, 01:11     Вопрос о динамическом выделении памяти для строки #16
accept, слушай, покажи, где я предложил внешнюю буферизацию? Ты мне прямо в qoute покажи, где я написал ему использовать это.
Ты мне просто скоро моск съешь своими какими-то необоснованными выводами... Задание одно - решение иное, написано одно, говорит другое. Ты меня поражаешь просто в корень нелогичностьью изложения... Забей, кароч...

P. S. если бы я хотел предложить, то согласился бы на использовании string, наверное. Либо твоим способом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2009, 12:43     Вопрос о динамическом выделении памяти для строки
Еще ссылки по теме:

C++ Использование конструктора базового класса при динамическом выделении памяти
Создание исключения при динамическом выделении памяти C++
Ошибка при динамическом выделении двумерного массива char C++
Cin.getline() не работает при динамическом выделении памяти C++
Ошибка при динамическом выделении памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
23.01.2009, 12:43  [ТС]     Вопрос о динамическом выделении памяти для строки #17
Описываю:
1. пользователь ввел на терминал строку
2. прога определила длину введенной строки
3. выделила память по длине.
4. считала строку с терминала в этот буфер.
Вроде, я верно понял.
Именно это мне и надо, только как это реализовать...
Yandex
Объявления
23.01.2009, 12:43     Вопрос о динамическом выделении памяти для строки
Ответ Создать тему
Опции темы

Текущее время: 09:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru