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