Чтение из двоичного файла в C и нескольких структур? - PullRequest
0 голосов
/ 16 апреля 2020

Для начала я хочу написать программу, которая получает данные из двоичного файла и печатает их в текстовый файл. Я смог найти тонны полезной информации о том, как это сделать, используя только одну структуру, но моя программа должна была использовать 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, будьте в безопасности, вы все !! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...