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

Считать массив структур из файла - C++

Восстановить пароль Регистрация
 
Raton_Laveur
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 16
04.06.2014, 21:38     Считать массив структур из файла #1
Видела похожие темы, но так и не дошло
В общем, количество структур в файле мне известно. Нужно считать их в массив. Проблема в том, что я не знаю, считывать их до этого количества или до конца файла. Или и то и другое? Я делаю как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define players 2
struct player{char fio[40]; int number; int age; int height; int weight;}; //так выглядят сами структуры
typedef struct{char name[15];
player Players[players];          
}team;
 
team *T;
T=(team*)malloc(n*sizeof(team));
for(int i=0;i<n;++i)                            //а это вроде считывание. fp - файловая переменная, n - уже известное мне количество структур
    {
        fscanf(fp,T[i].name);
        for(int j=0;j<players;++j)          fscanf(fp,"%s%d%d%d%d",T[i].Players[j].fio,&T[i].Players[j].number,&T[i].Players[j].age,&T[i].Players[j].height,&T[i].Players[j].weight);
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2014, 01:22     Считать массив структур из файла #2
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
В общем, количество структур в файле мне известно. Нужно считать их в массив.
fread(), все n разом. Если, конечно, структуры были записаны в файл бинарным методом (fwrite()).
Raton_Laveur
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 16
05.06.2014, 15:56  [ТС]     Считать массив структур из файла #3
Теперь получается, что я не знаю, сколько у меня структур. И как тогда считать через fread?
C++
1
2
3
4
5
while(!feof(fp))
    {
        fread(&T[n],sizeof(T),1,fp);
        n++;        
    }
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2014, 16:01     Считать массив структур из файла #4
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
Теперь получается, что я не знаю, сколько у меня структур.
Это как понять? То знаете:
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
В общем, количество структур в файле мне известно.
, то не знаете...
Raton_Laveur
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 16
05.06.2014, 16:44  [ТС]     Считать массив структур из файла #5
Ну прост когда я записываю через fwrite, то я не могу их посчитать, ибо не знаю, как)
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
05.06.2014, 16:49     Считать массив структур из файла #6
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
Ну прост когда я записываю через fwrite, то я не могу их посчитать, ибо не знаю, как)
Ну видимо можно решить эту проблему записав в начало файла количество структур, либо просто пытаться читать из файла до тех пор, пока попытка чтения не завершится ошибкой.
Raton_Laveur
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 16
05.06.2014, 17:11  [ТС]     Считать массив структур из файла #7
Количество структур я изначально не знаю. А можно подробнее про
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
пока попытка чтения не завершится ошибкой.
??
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2014, 17:12     Считать массив структур из файла #8
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
Ну прост когда я записываю через fwrite, то я не могу их посчитать, ибо не знаю, как)
А если не через fwrite(), то знаете, как посчитать?
Raton_Laveur
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 16
05.06.2014, 17:18  [ТС]     Считать массив структур из файла #9
В реале - нет) Я просто записывала в определённом формате, и по тому, сколько раз встречается определённое слово, считала.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
05.06.2014, 17:18     Считать массив структур из файла #10
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
Количество структур я изначально не знаю.
А как Вы собираетесь записывать в файл неизвестное количество?

Цитата Сообщение от Raton_Laveur Посмотреть сообщение
А можно подробнее про
Зависит от способа записи. Но все из мне известных имеют признак успешного либо не успешного завершения.
fread к примеру может возвращать количество реально прочитанных байт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2014, 17:53     Считать массив структур из файла
Еще ссылки по теме:

C++ Массив структур из файла
Как считать массив структур из файла txt C++
Считать из бинарного файла в массив структур фамилию, имя, оценку по математике, оценку по информатике C++

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

Или воспользуйтесь поиском по форуму:
Raton_Laveur
0 / 0 / 0
Регистрация: 19.07.2013
Сообщений: 16
05.06.2014, 17:53  [ТС]     Считать массив структур из файла #11
Да я по одной в конец записываю, мне не нужно их количество. Ну и я пыталась считывать, пока fread что-то возвращает.

Добавлено через 14 минут
Сей код считывает мне одну структуру. А что делать дальше, я без понятия
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
C++
1
2
3
4
5
while(!feof(fp))
{
 fread(&T[n],sizeof(T),1,fp);
 n++;
}
Добавлено через 17 минут
Короче, простите, я просто дебил немного.
C++
1
while(fread(&T[n],sizeof(team),1,fp))
Я забыла, что Т - массив структур
Yandex
Объявления
05.06.2014, 17:53     Считать массив структур из файла
Ответ Создать тему
Опции темы

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