0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
1

Выделение динамической памяти для чтения каждой структуры из файла

07.05.2014, 23:06. Показов 1319. Ответов 9
Метки нет (Все метки)

Здравствуйте! Никак не получается выделить динамическую память под каждую структуру из файла, учитывая, что я не знаю сколько структур в файле. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2014, 23:06
Ответы с готовыми решениями:

Структуры выделение динамической памяти под массивы
Здравствуйте, Мне нужно создать массив из элементов структуры, и использовать для этого...

Выделение динамической памяти для structur
Добрый день, В чем может быть причина с выделением динамической памяти в structur. Я приложил...

Выделение динамической памяти для матрицы
Эта программа преобразует матрицу со случайными числами в матрицу, которая показана на рисунке...

Выделение динамической памяти для char
Здравствуйте, возник вопрос: как выделить память для char массива? Вот, что делаю я: #include...

9
7335 / 6264 / 2849
Регистрация: 14.04.2014
Сообщений: 27,124
07.05.2014, 23:26 2
Просмотри файл, подсчитай сколько там структур. Выделишь память и при повторном просмотре считаешь.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
07.05.2014, 23:27  [ТС] 3
так а если файл бинарный
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 01:53 4
Цитата Сообщение от SlowAR Посмотреть сообщение
так а если файл бинарный
С бинарным проще. Курсор в конец файла, tellg() выдаст количество байт в файле, разделить на размер структуры.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
08.05.2014, 06:21  [ТС] 5
alsav22, я так делал, но оно пишет, что размер массива должен быть константой
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 06:55 6
Цитата Сообщение от SlowAR Посмотреть сообщение
я так делал
Вот это делали?
Цитата Сообщение от SlowAR Посмотреть сообщение
Никак не получается выделить динамическую память
Если это делали, то не будет писать:
Цитата Сообщение от SlowAR Посмотреть сообщение
что размер массива должен быть константой
Динамически создавайте массив, и будет вам счастье...
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
08.05.2014, 07:11 7
А как вы память выделяете? Можно цитату из кода?)
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
08.05.2014, 09:01  [ТС] 8
Praktolock,
C++
1
2
3
4
5
6
7
8
9
10
11
fseek(f1, 0L, SEEK_END);
size = ftell(f1) / sizeof(structura);
fseek(f1, 0L, SEEK_SET);
 
structura *mas[50];   //если тут вместо 50 написать size - будет ошибка
while(! feof(f1))
{
mas[num] = new structura;
fread(mas[num], sizeof(structura), 1, f1);
num++;
}
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
08.05.2014, 09:12 9
C++
1
structura *mas[50];
И что тут динамического? Это статический массив из 50 указателей.
Вот так динамически:
C++
1
structura *mas=new structura[50];
только delete[] потом незабудь сделать

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
fseek(f1, 0L, SEEK_END);
int size = ftell(f1) / sizeof(structura);
fseek(f1, 0L, SEEK_SET);
 
structura **mas=new structura*[size];   //если тут вместо 50 написать size - будет ошибка
int num=size;
while(feof(f1))
{
mas[num] = new structura;
fread(mas[num], sizeof(structura), 1, f1);
num++;
}
Как-то так должно проканать
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
08.05.2014, 09:22  [ТС] 10
Praktolock, спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2014, 09:22
Помогаю со студенческими работами здесь

Выделение динамической памяти для матрицы
Здравствуйте! Подскажите, пожалуйста, что делаю не так..написала программу, которая считывает...

Выделение динамической памяти для массива
можно ли так выделять? int array = new int;оно работает,но правильно ли это?

Выделение динамической памяти для char[n]*
Есть количество цитат (quote), которые должны быть типа char* Есть переменная с колличеством цитат...

Выделение динамической памяти для массива точек
Доброго времени суток. Вот у нас есть структура точка struct point { ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru