问题描述
问题是我无法初始化 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 (将#修改为@)