小弟用C语言做一个东西
想要用一个程序( 字符界面 ) 对一个结构体进行输入和存储
用另外一个程序( 图形界面 ) 对相同的结构体进行读取显示
存储和读取用的是fwrite 和 fread函数
但是只有存储它的那个程序能正确读出来
图形界面的程序读取出来的数据不对。。。
从第二个开始全都是乱码了...
小弟还是比较渣的学生。。。
希望大神们多多指教
谢啦~
C语言不同程序对同一个结构体的文件存储和读取
答案:2 悬赏:20 手机版
解决时间 2021-03-18 08:58
- 提问者网友:抽煙菂渘情少年
- 2021-03-17 13:56
最佳答案
- 五星知识达人网友:撞了怀
- 2021-03-17 15:26
1、对齐方式。
程序编译时,可以选择对齐方式,如4字节对齐,8字节对齐。如果两个程序对齐方式不一致,可能导致结构体的大小在两个程序中不一样。可以用pragma pack包围定义的结构体,设置对齐。
#pragma pack(1)
struct ....
#pragma pack()
2、Big-Endian与Little-Endian。
如果文件是在一台机器上写,另一台机器上读,可能因为CPU的大小头不一致,导致读出的数字不正确。需要进行大小头转换。(如X86的是小头,Power的是大头)
程序编译时,可以选择对齐方式,如4字节对齐,8字节对齐。如果两个程序对齐方式不一致,可能导致结构体的大小在两个程序中不一样。可以用pragma pack包围定义的结构体,设置对齐。
#pragma pack(1)
struct ....
#pragma pack()
2、Big-Endian与Little-Endian。
如果文件是在一台机器上写,另一台机器上读,可能因为CPU的大小头不一致,导致读出的数字不正确。需要进行大小头转换。(如X86的是小头,Power的是大头)
全部回答
- 1楼网友:鸠书
- 2021-03-17 15:46
1。如果你知道存入文件的第一个结构是什么类型的,此种就非常方便了,自己根据 从文件读出的第一个结构里面的下个结构指针 来读文件中下个结构。
2。如果你不知道存入文件的第一个结构式啥类型,但又想分三个结构来存取,那你只能在每个结构里面加上一个变量来区分是什么结构,这样在读文件之前先读出这个变量,根据其值来判断结构类型
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯