从文件中保存和读取结构的问题

时间:2013-02-26 05:18:53

标签: c fopen

我正在做一项家庭作业,负责编写和读取文件中的二进制数据。在这个赋值中,我们需要将多个结构写入文件,然后才能读回它们。现在,我开始小,我正在尝试将单个结构写入文件(这是有效的)。但是,在从文件中读取数据时,我可以看到我的int的值已经改变(一些随机值),而字符串是应该的。为什么我会遇到这样的问题???它与机器的字节序有关吗?有没有其他选项可以让我成功写入和读取二进制数据?

typedef struct
{
int number;
char name[256];
} header;

header hdr = {.number = 1000, .name = "Testing"};
FILE * ifp;
fp = fopen("FileName", "w");
fwrite(&hdr, sizeof(hdr), 1, fp);
fclose(fp);

FILE * ofp;
header newHdr;
ofp = fopen("FileName", "rb");
fread(&newHdr, sizeof(newHdr), 1, ofp);
fclose(ofp);

printf("number = %d \nname = %s\n", &newHdr.number, &newHdr.name);


number = 329346238
name = Testing

number = -6239872395
name = Testing

1 个答案:

答案 0 :(得分:1)

您正在将文件写为文本但将文件读取为二进制文件。请执行具有相同属性的功能,更改w和r