gpt4 book ai didi

c - 二进制文件的 fseek 行为

转载 作者:行者123 更新时间:2023-11-30 18:56:15 26 4
gpt4 key购买 nike

我正在使用二进制格式。

我注意到了

fseek(fp, offset, SEEK_SET);
fread(&mystruct, sizeof(struct mystruct_thing), 1, fp);

产生的输出与简单的输出不同

fread(&mystruct, sizeof(struct mystruct_thing), 1, fp);

遵循预期行为。

为什么会出现这样的情况呢?是因为SEEK_SET覆盖了offset参数吗?

最佳答案

fread 的第二个参数是要读取的每个项目的大小,在本例中为 struct。我不明白你希望偏移量如何到达那里 - 它应该类似于 sizeof(mystruct)

编辑:现在问题已被编辑,两段代码产生不同结果的原因很简单,第一段代码寻找fp的位置在读取之前偏移,而第二个则没有。 freadfp 的当前位置开始读取 sizeof(struct mystruct_thing) 个字节 ,因此起始位置不同 (假设 offset 与您在 fseek 之前所处的位置不同),因为 fseek 设置了用于将来读取的位置(并写道)。

关于c - 二进制文件的 fseek 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24787833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com