gpt4 book ai didi

c - fread fseek 仅在 C 中的结构成员

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:26 25 4
gpt4 key购买 nike

在 C 中,我试图选择结构的特定成员并将其打印出来。我想知道,这种操作的建议格式是什么?我已经尝试了几乎所有我能想到的方法。我似乎无法将其限制为结构的特定 chunk 成员。

fseek(in, sizeof(d.contents.datas.chunk), SEEK_SET);
fread(&ch, 1, 1, in);
fprintf(out, "%02x", (int)(ch & 0x00FF));

看来我可以获取所有结构数据,或者只能获取一个字符。出于某种原因,数据也没有正确输出,例如 bytes 应该是实际的 bytes,但输出为 1。显然,打印来自该结构的数据的方式确实存在问题。这可能与大端与小端有关吗?我知道我正在访问的文件是大端。

我访问的结构如下:

struct chunkInfo
{
int chunkInformation;
int bytes;

union
{
struct
{
long size;
char chunk[1];
} datas;
} contents;
};

最佳答案

您正在查找文件中的错误位置。假设您的机器的字节序与文件的字节序相同,那么这将起作用:

fseek(in, long(&d.content.data.chunk[0] - &d), SEEK_SET);
fread(&ch, 1, 1, in);
fprintf(out, "%02x", (int)(ch & 0x00FF));

第一行计算 block 在结构中的字节偏移量。您使用的 sizeof(chunk) 当然只返回 1。

如果字节序不同,那么在读取结构后,您必须将每个非字符字符转换为正确的字节序。

关于c - fread fseek 仅在 C 中的结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39429688/

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