0

我正在做一项家庭作业,该作业涉及将二进制数据写入和读取到文件中。在这个分配中,我们需要将多个结构写入一个文件,然后能够将它们读回。现在,我从小开始,正在尝试将单个结构写入文件(这可行)。但是,从文件中读取数据后,我可以看到我的 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
4

1 回答 1

1

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

于 2013-02-26T05:26:10.980 回答