Как читать структуры из отдельного файла в один массив, используя fread в C - PullRequest
0 голосов
/ 08 апреля 2019

В настоящее время я пытаюсь написать программу для чтения файла bin, используя предварительно созданную структуру в отдельном заголовочном файле.Я могу заставить программу записывать непосредственно то, что находится в файле Bin, используя структуру, но я теряюсь, когда дело доходит до направления этого в массив.Всякий раз, когда я пытаюсь вставить массив для чтения в первую очередь, программа перестает работать и вылетает.

Вот мой текущий код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "project7.h"

int main() {
    struct game_structure Game;
    FILE * fp;
    fp = fopen("games.bin", "rb");

    while (1) {
        fread(&Game, sizeof(Game), 1, fp);
        if (feof(fp)) {
            break;
        }

        printf("\nTitle: %s", Game.gameName);
        printf("\nGenre/Game Type: %s", Game.gameType);
        printf("\nDeveloper: %s", Game.developer);
        printf("\nReview Score: %d", Game.reviewScore);
        printf("\nGame Length: %.2lf", Game.gameLength);
        printf("\nAmount Sold: %d", Game.amountSold);
        printf("\n");
    }
    printf("\nFinished\n");

    fclose(fp);
    return 0;
}

А вот что находится в пользовательском заголовочном файле:

#include <stdio.h>
#include <stdlib.h>

typedef struct game_structure
{
    char gameName[20]; // Name of the game
    char gameType[30]; // Video game or physical game? Activity or boardgame?
    char developer[30]; // Who created the game?
    int reviewScore; //What was the review score? Let's just use 1-5 for simplicity.
    double gameLength; /* How many hours does it take to complete? Use 
    whole numbers for hours, followed by period and then the minutes. I.E. 
    6.30 means 6 hours and 30 minutes. */

    int amountSold; //How many copies of the game have been sold?
} Game;

По сути, даже если сначала сложно записать его в массив, это то, что мне нужно сделать.Как я могу записать несколько возможных входов структуры в массив?Каждая часть структуры имеет 5 разных входов, поэтому мне нужно иметь возможность сохранить их все в массиве, а затем вызывать каждый отдельный вход с правильными входами для других частей структуры.

...