在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
。显然,打印此结构中的数据的方式确实有问题。这会不会是大端对小端的问题呢?我知道我要访问的文件是大端的。
Im访问的struct如下:
struct chunkInfo
{
int chunkInformation;
int bytes;
union
{
struct
{
long size;
char chunk[1];
} datas;
} contents;
};
发布于 2016-09-11 00:10:55
您正在查找文件中的错误位置。假设您的机器的字节顺序与文件的字节顺序相同,则可以执行以下操作:
fseek(in, long(&d.content.data.chunk[0] - &d), SEEK_SET);
fread(&ch, 1, 1, in);
fprintf(out, "%02x", (int)(ch & 0x00FF));
第一行计算结构中块的偏移量。您使用的是sizeof(块),它当然只返回1。
如果字节序不同,则必须在读取结构后将每个非字符字符转换为正确的字节序。
https://stackoverflow.com/questions/39429688
复制相似问题