C语言不同程序对同一个结构体的文件存储和读取

小弟用C语言做一个东西想要用一个程序(字符界面)对一个结构体进行输入和存储用另外一个程序(图形界面)对相同的结构体进行读取显示存储和读取用的是fwrite和fread函数但是只有存储它的... 小弟用C语言做一个东西 想要用一个程序( 字符界面 ) 对一个结构体进行输入和存储 用另外一个程序( 图形界面 ) 对相同的结构体进行读取显示 存储和读取用的是fwrite 和 fread函数 但是只有存储它的那个程序能正确读出来 图形界面的程序读取出来的数据不对。。。 从第二个开始全都是乱码了... 小弟还是比较渣的学生。。。 希望大神们多多指教 谢啦~ 展开

第1个回答  2019-11-10
1、对齐方式。
程序编译时,可以选择对齐方式,如4字节对齐,8字节对齐。如果两个程序对齐方式不一致,可能导致结构体的大小在两个程序中不一样。可以用pragma
pack包围定义的结构体,设置对齐。
#pragma
pack(1)
struct
....
#pragma
pack()
2、Big-Endian与Little-Endian。
如果文件是在一台机器上写,另一台机器上读,可能因为CPU的大小头不一致,导致读出的数字不正确。需要进行大小头转换。(如X86的是小头,Power的是大头)
相似回答