我一直在尝试从存储结构的二进制文件中读取数据,但是正确读取文件时,任何尝试访问该结构的尝试都会导致访问冲突。
这是结构:

typedef struct Object {
    const char *Description;
    const char *Tag[20];
    struct Object *Location;
    struct Object *Destination;
} OBJECT;


这是用于读取文件的代码:

int ReadInDataFiles(OBJECT Objects[])
{
    FILE *pObjectFile = NULL;
    OBJECT TempObjects;

    if (fopen_s(&pObjectFile, OBJECT_FILE, "rb") != 0)
    {
        printf("Error: external file cannot be opened.");
        return 1;
    }
    else
    {
        fread(&TempObjects, sizeof(OBJECT), 1, pObjectFile);

        for (int Count = 0; Count < NUMBER_OF_OBJECTS; Count++)
        {
            Objects[Count] = TempObjects;

            fread(&TempObjects, sizeof(OBJECT), 1, pObjectFile);
        }

        fclose(pObjectFile);
    }

最佳答案

由于在运行时分配了指针,并且在运行时分配了地址,因此在文件内存储/加载包含指针的二进制映像毫无意义,因为每次执行程序时地址都会变化。

因此,您无法加载此结构。您将不得不重新编写整个程序,因为这没有任何意义。

09-08 08:57