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.
如果字节序不同,那么您必须在读取结构后将每个非字符字符转换为正确的字节序。
在 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.
如果字节序不同,那么您必须在读取结构后将每个非字符字符转换为正确的字节序。