fread fseek 仅在 C 中的结构成员

fread fseek struct member only in C

在 C 中,我试图 select 结构的特定成员并将其打印出来。我想知道,这种操作的建议格式是什么?我已经尝试了几乎所有我能想到的方法。我似乎无法将其限制为结构的特定 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));

第一行计算块在结构中的字节偏移量。您使用的 sizeof(chunk) 当然只是 returns 1.

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