如何解决我如何在 file.bin c++ ofstream::write 中写入 x00
问题是我无法初始化 INODE->NAME 的行为出乎意料。在 0B 列中,结果是 FF,但我想要 00。我做错了什么? 真正想要的是写一个小于sizeof(INODE[i].NAME)的值,但是我没有用值填充的字节应该是00而不是随机的!
typedef struct {
unsigned char IS_USED;
unsigned char IS_DIR;
char NAME[10];
char SIZE;
unsigned char DIRECT_BLOCKS[3];
unsigned char INDIRECT_BLOCKS[3];
unsigned char DOUBLE_INDIRECT_BLOCKS[3];
} INODE;
ofstream fileSystem(fsFileName,ios::out | ios::binary);
// in this case numblocks is 1
// Writing INODES
for (int i = 0; i < numBlocks; i++) {
char empty[] = {'/','\x00'};
if (i == 0) {
cout << sizeof(empty) << endl;
strcpy(node[i].NAME,empty);
node[i].IS_USED = 0x01;
node[i].IS_DIR = 0x01;
} else {
strcpy(node[i].NAME,"\x00\x00\x00\x00\x00\x00\x00\x00");
node[i].IS_USED = 0x00;
node[i].IS_DIR = 0x00;
}
node[i].SIZE = 0x00;
node[i].DIRECT_BLOCKS[0] = 0x00;
node[i].DIRECT_BLOCKS[1] = 0x00;
node[i].DIRECT_BLOCKS[2] = 0x00;
node[i].INDIRECT_BLOCKS[0] = 0x00;
node[i].INDIRECT_BLOCKS[1] = 0x00;
node[i].INDIRECT_BLOCKS[2] = 0x00;
node[i].DOUBLE_INDIRECT_BLOCKS[0] = 0x00;
node[i].DOUBLE_INDIRECT_BLOCKS[1] = 0x00;
node[i].DOUBLE_INDIRECT_BLOCKS[2] = 0x00;
fileSystem.write(reinterpret_cast<const char*>(&node[i]),sizeof(INODE));
}
这是我的文件.bin
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。