我这里有一个嵌套结构 .
typedef struct
{
struct_one one;
struct_two two;
struct_three three;
} outermost_struct;
将指针传递给函数中的外部结构
outermost_struct settings
readFileInStruct(settings_file, &settings)
我的函数在struct中读取bin文件
int readConfigIn2Struct
(
char file_name[],
outermost_struct*settings_mem_location
)
{
FILE *ptr_file;
ptr_file = fopen(file_name,"rb");
if(ptr_file == NULL)
{
return -1;
}
fread(&(*settings_mem_location),sizeof(outermost_struct),1,ptr_file);
fclose(ptr_file);
return 0;
}
这里fread失败并返回主函数 . 谁能告诉我为什么我的畏惧失败? teh文件的大小为73kb,struct有足够的内存来容纳整个文件 .
现在不是为整个文件做一次fread,而是试图为每个结构做fread . 的fread(&(* settings_mem_location)的sizeof(struct_one),1,ptr_file);
这里fread正确写入struct_one . 现在我需要fread写入struct_two . 如何将指针前进指向struct_two?
1 回答
详细的错误检查和日志记录是免费调试的 . 除此之外,包括额外的日志记录主要有帮助 .
在您显示的代码的可能版本下方,反映了我上面的陈述:
使用选项
-DDEBUG
进行编译以启用其他日志记录,例如进入和退出 .要删除对
assert()
的调用,请使用选项-DNDEBUG
自动编译 .Details about assert() are in the documentation here.