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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Funky108
2 / 2 / 0
Регистрация: 13.11.2009
Сообщений: 24
#1

Выделение памяти. - C++

07.12.2009, 18:45. Просмотров 693. Ответов 6

Значит так.Задача такая.
Ввести строки или строку символов. Сколько мы будем вводить символов неизвестно.Может быть 10 а может быть больше или меньше.Так вот как выделить память на этот массив если я буду вводить неизвестно сколько символов если функция malloc() выделяет определенное количество памяти?А мне нужно чтобы динамическая память увеличивалась при вводе символа. Знаю еще функции realloc() которая добавляет к выделенной памяти еще некоторую область памяти.

В общем задача ввести символы неизвестного количества.

Как это сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение памяти. (C++):

Выделение памяти, проверка на утечку памяти - C++
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Выделение памяти... - C++
Вот решил себе ликбез устроить и возникли вопросы: 1) Почему char* p = "fffff"; не реагирует на delete p 2) Когда надо...

Выделение памяти - C++
Доброго времени суток. Чтобы выделить память под двумерный массив в такой форме: //n - переменная, M - константа arr = new double...

Выделение памяти - C++
Здравствуйте! #include<iostream> int main() { int *mass = new int ; int *mass2 = new int ; std::cout << (unsigned int)mass <<...

Выделение памяти - C++
Часто возникает такая проблема, когда конфигурирую проект как Release происходит ошибка выделения памяти (при вызывании new), например...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.12.2009, 00:06 #2
с помощью malloc - выделить память, с помощью realloc - нарастить выделение
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
08.12.2009, 00:54 #3
почему бы просто не использовать std::string?
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
08.12.2009, 01:03 #4
C++
1
2
std::string s;
       std::cin>>s;
вводи скоко хочешь
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
08.12.2009, 01:08 #5
тогда уже:
C++
1
2
string s;
getline( cin, s );
Funky108
2 / 2 / 0
Регистрация: 13.11.2009
Сообщений: 24
08.12.2009, 20:42  [ТС] #6
А на си как это будет выглядеть? то бишь не С++ код

Думал сначала выделить память допустим два байта и при нажатии какойто клавиши функцией realloc организовать увелечение памяти на +1 байт и зациклить пока не будет Enter клавиша нажата.

Пока не представляю как
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.12.2009, 21:14 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
На Си это будет просто как табуретка.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    char *s;
    int i, maxlen = 512;
 
    printf("Введите строку: ");
    s = (char *) malloc(maxlen);
    for(i = 0; (s[i] = getchar()) != '\n'; i++)
        if(i >= maxlen - 1) {
            maxlen *= 2;
            s = realloc(s, maxlen);
        }
    s[i] = '\0';
 
    printf("Строка: %s\n", s);
    free(s);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 21:14
Привет! Вот еще темы с ответами:

Выделение памяти - C++
Доброго всем вечера. В книжке нашел задание: определить класс, представляющий стек. Сделал так, что при заполнении всего стека,...

Выделение памяти - C++
Добрый вечер. Немогу никак понять некоторые тонкости выделения памяти. Во первых: на что указывает указатель, при записи char*...

выделение памяти - C++
есть класс множество. необходимо создать класс &quot;правило&quot;, одним из методов которого является добавление множества к соответствующему списку...

Выделение памяти - C++
int main() { FILE *fIn = NULL, *fOut =NULL; Error EMyError; CNodeStack *Start; CNodeStack *ListF = new CNodeStack; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.12.2009, 21:14
Ответ Создать тему
Опции темы

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