c - 从二进制文件读取数据到 C 结构中的访问冲突

标签 c struct

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

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);
    }

最佳答案

由于指针是在运行时分配的,地址是在运行时分发的,因此在文件内存储/加载包含指针的二进制图像是没有任何意义的,因为每次执行程序时地址都会有所不同。

因此您无法加载此结构。您必须从头开始重写整个程序,因为它没有意义。

关于c - 从二进制文件读取数据到 C 结构中的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43894889/

相关文章:

c - 将数组中的偶数和奇数配对

c - 如何在 MSVC 中将每个源文件视为一个单独的程序

c - 取消引用指向不完整类型的指针。返回结构指针

c - 通过引用获取功能修改结构

c 在结构中定义不同大小的数组

c++ - 当结构定义在头文件中时,如何在 main() 中创建结构数组?

c - 如何解决这个C链接器错误?

c - 尝试释放结构中的指针时出现内存错误 - C

c - 为什么与管道信号量的同步会以这种奇怪的方式表现?

c - C 中链表的段错误