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

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

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

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

04.06.2014, 21:38. Просмотров 605. Ответов 10
Метки нет (Все метки)

Видела похожие темы, но так и не дошло
В общем, количество структур в файле мне известно. Нужно считать их в массив. Проблема в том, что я не знаю, считывать их до этого количества или до конца файла. Или и то и другое? Я делаю как-то так:
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);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 21:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать массив структур из файла (C++):

Считать массив структур из файла - C++
//создание файла-записи #include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; using namespace std; //Стpуктуpа данных ...

Как считать массив структур из файла txt - C++
#include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; struct slug { char...

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

Нужно записать массив в файл, а потом из этого файла считать этот же массив - C++
Помогите, пожалуйста, никогда с файлами делов не имела. Нужно записать массив в файл, а потом из этого файла считать этот же массив. ...

Массив структур из файла - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include &lt;stdlib.h&gt; #include &lt;cstring&gt; #include...

Массив структур из файла - C++
Помогите, пожалуйста, с поиском ошибки. Нам дан текстовый файл, из 3 столбцов и 5 строк, с разделителями в виде пробелов и новой строки -...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 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
5417 / 4813 / 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
326 / 229 / 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
5417 / 4813 / 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
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
05.06.2014, 17:18 #10
Цитата Сообщение от Raton_Laveur Посмотреть сообщение
Количество структур я изначально не знаю.
А как Вы собираетесь записывать в файл неизвестное количество?

Цитата Сообщение от Raton_Laveur Посмотреть сообщение
А можно подробнее про
Зависит от способа записи. Но все из мне известных имеют признак успешного либо не успешного завершения.
fread к примеру может возвращать количество реально прочитанных байт.
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))
Я забыла, что Т - массив структур
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2014, 17:53
Привет! Вот еще темы с ответами:

Считать массив А с файла a.txt. после чего сформировать массив С в котором все отрицательные элементы с масси - C++
Помогите написать программу на C++. Изучала этот язык меньше пол года, пока есть проблемы. очень нужна ваша помощь Считать массив А с файла...

Считывание из файла в массив структур - C++
Доброго времени суток! Есть структура: struct iDiscipline{ char name; int num_course; int num_term; int am_lec; ...

Заполнить из файла массив структур - C++
задача такая файле есть данные которые имеют Количество строк: 5. Столбцы: Фамилия, Место жительства, Год рождения. Определить ...

Заполнить массив структур данными с файла - C++
Описать структуру с именем WORKER, содержащую следующие поля: ФИО работника; название занимаемой должности; год поступления на работу....


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

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

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