Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 13.11.2009
Сообщений: 24
1

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

07.12.2009, 18:45. Показов 866. Ответов 6

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

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

Как это сделать?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2009, 18:45
Ответы с готовыми решениями:

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

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

Выделение памяти(С = С++)
Привет. Нужна помощь, в выделении памяти. Есть код на С, нужно перевести его в С++. int...

Выделение памяти (new)
Наткнулся на пример где делают непонятные мне выделения памяти с помощью new X* pi = new X; X*...

6
MCSD: APP BUILDER
8791 / 1070 / 104
Регистрация: 17.06.2006
Сообщений: 12,603
08.12.2009, 00:06 2
с помощью malloc - выделить память, с помощью realloc - нарастить выделение
0
32 / 32 / 7
Регистрация: 26.10.2009
Сообщений: 98
08.12.2009, 00:54 3
почему бы просто не использовать std::string?
0
424 / 228 / 87
Регистрация: 25.03.2009
Сообщений: 744
08.12.2009, 01:03 4
C++
1
2
std::string s;
       std::cin>>s;
вводи скоко хочешь
0
32 / 32 / 7
Регистрация: 26.10.2009
Сообщений: 98
08.12.2009, 01:08 5
тогда уже:
C++
1
2
string s;
getline( cin, s );
1
2 / 2 / 0
Регистрация: 13.11.2009
Сообщений: 24
08.12.2009, 20:42  [ТС] 6
А на си как это будет выглядеть? то бишь не С++ код

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

Пока не представляю как
0
576 / 570 / 65
Регистрация: 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;
}
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2009, 21:14

До выделение памяти в С++
Всем приветик. Вообщем есть некоторые сложности с довыделение памяти... Что я хочу сделать: есть...

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

Выделение памяти
Всем доброго времени суток! Пытаюсь сделать связанный список на 100кк элементов, но не выделив...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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