我正在寫一個函數,該函數應該在二進制文件中保存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'的聲明。 –