基本问题,但我希望这个结构占用 13 个字节的空间(1 个用于 char,12 个用于 3 个无符号整数)。相反,sizeof(ESPR_REL_HEADER)
给了我 16 个字节。
typedef struct {
unsigned char version;
unsigned int root_node_num;
unsigned int node_size;
unsigned int node_count;
} ESPR_REL_HEADER;
我要做的是用一些值初始化这个结构,并将它包含的数据(原始字节)写入文件的开头,这样当我打开这个文件时,我以后可以重建这个结构并获得一些元数据有关文件其余部分包含的内容的数据。
我正在初始化结构并将其写入文件,如下所示:
int esprime_write_btree_header(FILE * fp, unsigned int node_size) {
ESPR_REL_HEADER header = {
.version = 1,
.root_node_num = 0,
.node_size = node_size,
.node_count = 1
};
return fwrite(&header, sizeof(ESPR_REL_HEADER), 1, fp);
}
node_size
我实验时,目前在哪里4。
将结构写入文件后,该文件包含以下数据:
-bash$ hexdump test.dat
0000000 01 bf f9 8b 00 00 00 00 04 00 00 00 01 00 00 00
0000010
我希望它实际上包含:
-bash$ hexdump test.dat
0000000 01 00 00 00 00 04 00 00 00 01 00 00 00
0000010
原谅新手。我正在努力学习:) 如何有效地将结构的数据组件写入文件?