【发布时间】:2018-05-10 14:19:11
【问题描述】:
我在这里有一个嵌套结构。
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 失败并返回到 main 函数。谁能告诉我为什么我的 fread 失败了? teh 文件的大小为 73kb,struct 有足够的内存来容纳整个文件。
现在我不是对整个文件执行一次 fread,而是尝试对每个结构执行 fread。 fread(&(*settings_mem_location),sizeof(struct_one),1,ptr_file);
这里 fread 正确地写入了 struct_one。现在我需要 fread 写入 struct_two。如何推进指针指向 struct_two?
【问题讨论】:
-
“嵌套结构”是什么意思?您可以edit您的问题并添加
defined_nested_struct的定义以澄清。 -
答案是:可能是的。当然,您仍然向我们展示了很多事实。
-
它是如何失败的?
struct_mem_location分配了吗?文件是否打开?&(*a)和(a+1)-1一样有意义。 -
不看返回值怎么知道 fread 做了什么?
-
@stark 我尝试使用返回值。 fread 永远不会返回,程序只是回到 main,所以我从来没有 fread 的返回值