Для начала я хочу написать программу, которая получает данные из двоичного файла и печатает их в текстовый файл. Я смог найти тонны полезной информации о том, как это сделать, используя только одну структуру, но моя программа должна была использовать 3 структуры и вот где я потерялся.
Вот как выглядит структура.
#define MaxChar 80
typedef struct
{
int temperature;
int time;
} Measurements;
typedef struct
{
char deptName[MaxChar]
int nbReadings;
Measurements *Mesure;
} Regions;
typedef struct
{
int nbRegions;
Regions *Region;
} System;
Предполагается, что конечный результат представляет собой массив различных данных, собранных из двоичного файла, и выглядит следующим образом:
Leon Provancher: (21,0) (22,17280) (21,34560) (20,51840) (21,69120)
Pierre Boucher: (19,0) (18,14400) (19,28800) (18,43200) (17,57600) (18,72000)
Albert Tessier: (22,0) (22,28800) (22,57600)
Различные данные хранятся таким образом что сначала он отображает Систему, затем Регионы, а затем Измерения.
всякий раз, когда я пытаюсь распечатать все это с помощью цикла while, я получаю:
3 //nbRegions
1852794188
1668178294
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
5 // nbRedings for 1st region
21 // temperature
22 // temperature
21 // temperature
20 // temperature
21 // temperature
1919248720
1751348591
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
6 //nb of readings 2nd region
19 // temperature
18 // temperature
19 // temperature and so one
.
.
.
Что я не могу обернуть головой Вокруг это значение указателей внутри структур. это должно облегчить доступ ко всем данным в файле только из структуры системы? как они могут быть как-то связаны?
Если нет, то что мне здесь не хватает? почему я не могу получить доступ к любому deptName или температуре, которые хранятся с помощью этого метода
FILE *IN = NULL;
int a;
System S1;
Regions S2;
Measurements S3;
fopen_s(&IN, "file.bin", "rb");
if (IN == NULL)
{
printf("Unable to open file!");
return -1;
}
fread(&S3, sizeof(Measurements), 1, IN);
a = STR3.temperature;
printf("\n \%d ", a);
У меня нет возможности связаться с моим преподавателем из-за COVID19, будьте в безопасности, вы все !! :)