我有一個菜單程序。結構稱爲「Siunta」,結構中帶有稱爲「nauja」的新值。我試圖將它寫入文件,然後從文件中讀取。閱讀和寫作的功能在下面提供。編譯器中的錯誤消息:C - 試圖從文件讀取結構
|144|error: 'Siunta' undeclared (first use in this function)|.
什麼可能是錯誤的?
寫作:
FILE* fp = fopen("file.bin", "wb");
struct Siunta nauja;
fwrite(&(nauja.siuntos_nr), sizeof(nauja.siuntos_nr), 1, fp);
fwrite(&(nauja.destination), sizeof(nauja.destination), 1, fp);
fwrite(&(nauja.svoris), sizeof(nauja.svoris), 1, fp);
fclose(fp);
閱讀:
FILE* fp = fopen("file.bin", "rb");
struct Siunta nauja2;
fread(&nauja2, sizeof(Siunta),1,fp);
printf("siuntos nr: %d destination: %s Svoris: %d",nauja2.siuntos_nr, nauja2.destination, nauja2.svoris);
要小心結構的讀/寫。由於您逐字段地編寫它,因此文件中的數據將不具有實際結構使用的可能的填充,因此當您閱讀它時,結果可能不符合您的期望。你應該以同樣的方式讀寫結構,不論是逐場還是整個結構,不要混合它。 –
@JoachimPileborg在這裏提出了非常重要的一點。知道誰可能讀取該文件也是可取的。如果一個不同的架構讀取它,它可能會有不同的填充,並且可能無法寫入/讀取整個結構。字節順序也很重要。一個不同的endian機器將不得不在讀取後轉換這些值。 – holgac