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

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

Войти
Регистрация
Восстановить пароль
 
SlowAR
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
#1

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

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

Здравствуйте! Никак не получается выделить динамическую память под каждую структуру из файла, учитывая, что я не знаю сколько структур в файле. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 23:06     Выделение динамической памяти для чтения каждой структуры из файла
Посмотрите здесь:

Выделение и удаление памяти, выделенной для динамической строки C++
Выделение динамической памяти для двумерного массива. C++
C++ Выделение динамической памяти для матрицы
C++ выделение динамической памяти
C++ Выделение динамической памяти для матрицы
Выделение динамической памяти C++
Выделение динамической памяти для char[n]* C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4480 / 3818 / 1288
Регистрация: 14.04.2014
Сообщений: 14,985
07.05.2014, 23:26     Выделение динамической памяти для чтения каждой структуры из файла #2
Просмотри файл, подсчитай сколько там структур. Выделишь память и при повторном просмотре считаешь.
SlowAR
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
07.05.2014, 23:27  [ТС]     Выделение динамической памяти для чтения каждой структуры из файла #3
так а если файл бинарный
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 01:53     Выделение динамической памяти для чтения каждой структуры из файла #4
Цитата Сообщение от SlowAR Посмотреть сообщение
так а если файл бинарный
С бинарным проще. Курсор в конец файла, tellg() выдаст количество байт в файле, разделить на размер структуры.
SlowAR
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
08.05.2014, 06:21  [ТС]     Выделение динамической памяти для чтения каждой структуры из файла #5
alsav22, я так делал, но оно пишет, что размер массива должен быть константой
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.05.2014, 06:55     Выделение динамической памяти для чтения каждой структуры из файла #6
Цитата Сообщение от SlowAR Посмотреть сообщение
я так делал
Вот это делали?
Цитата Сообщение от SlowAR Посмотреть сообщение
Никак не получается выделить динамическую память
Если это делали, то не будет писать:
Цитата Сообщение от SlowAR Посмотреть сообщение
что размер массива должен быть константой
Динамически создавайте массив, и будет вам счастье...
Praktolock
 Аватар для Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
08.05.2014, 07:11     Выделение динамической памяти для чтения каждой структуры из файла #7
А как вы память выделяете? Можно цитату из кода?)
SlowAR
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++;
}
Praktolock
 Аватар для Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300
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++;
}
Как-то так должно проканать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 09:22     Выделение динамической памяти для чтения каждой структуры из файла
Еще ссылки по теме:

Выделение динамической памяти для char C++
Динамическое выделение памяти для структуры в функции C++
C++ Выделение динамической памяти
C++ Выделение динамической памяти для массива точек
Структуры выделение динамической памяти под массивы C++

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

Или воспользуйтесь поиском по форуму:
SlowAR
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
08.05.2014, 09:22  [ТС]     Выделение динамической памяти для чтения каждой структуры из файла #10
Praktolock, спасибо
Yandex
Объявления
08.05.2014, 09:22     Выделение динамической памяти для чтения каждой структуры из файла
Ответ Создать тему
Опции темы

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