我正在写一个函数,该函数应该在二进制文件中保存3个结构(其中2个是结构数组)。这里是我的功能:将多个结构保存为二进制文件(C)
void saveFile(Struct1 *s1, Struct2 *s2, Struct3 s3) {
FILE *fp = NULL;
fp = fopen("save.bin", "w+b");
if (fp == NULL) {
printf("Save failed.\n");
}
fwrite(s1, sizeof(Struct1), struct3.nElements, fp);
fwrite(s2, sizeof(Struct2), NELEMENTS, fp);
fwrite(&s3, sizeof(Struct3), 1, fp);
printf("Save done.\n");
}
s1
有struct3.nElements
,s2
有NELEMENTS
(这是一个常数)和s3
只是一个结构,而不是一个数组。当我尝试使用HexEditor打开save.bin时,它给出了与我期望的结果截然不同的结果,我想知道是否正确使用了fwrite
函数,特别是对于结构数组。
你使用十六进制编辑器得到了哪个结果,你期望得到哪个结果,以及你写入了什么文件。如果你想得到答案,你必须与我们分享这些信息。阅读[MCVE](http://stackoverflow.com/help/mcve)。 –
@MichaelWalz当我使用HexEditor时,我看到了随机字符,一些正确的'struct2'字段以及一些像Visual Studio程序的路径。显然,我期待看到结构的正确价值。 – THZ
显示如何调用'saveFile'。问题可能在那里。并显示'struct1','struct2'和'struct3'的声明。 –