微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何在 file.bin c++ ofstream::write 中写入 x00

如何解决我如何在 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

This is my file.bin

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。