将缓冲区写入结构似乎不起作用

时间:2016-12-05 02:14:49

标签: c++ struct

我正在开发一个旨在为类创建文件系统的简单版本的项目。当我使用" inode"我遇到了麻烦。我们定义的结构。 inode结构定义如下:

struct iNode
 {
  char name[8]; //file name
  int size;     // file size 
  int blockPointers[8]; // direct block pointers
  int used;             // 0 if free; 1 if in use
};

我的项目后面还会有以下代码:

char* inodes = NULL;
inodes = new char[48];
iNode *myinode = new iNode();
int inodemax = 16;
int storedi = 0;
int x = 0;
while(x < inodemax){
  disk.seekg(128 + 48*x,ios::beg);
  disk.read(inodes, 48);
  inodex = (struct iNode *)  &inodes;
  if(inodex -> used == 0){
    inodex -> used = 1;
    for(int i = 0; i < 8; i++){
      inodex -> name[i] = name[i];
    }
    inodex -> size = size;
    storedi = disk.tellg();
    break;
  }
  if(inodex -> used != 0 && x == 15){
    return 4;
  }
  x = x +1;
}

我不熟悉c ++,所以任何明显的错误都可能以我对语言的有限知识为代价(我对C更有经验)。我的问题来自于我创建了一个测试用例,其中inode使用字段应该是0-而且返回语句是&#34; 4&#34;退回。它不应该达到代码的那一部分。

当我手动更改我的代码以获取&#34;使用&#34;来自inode缓冲区的字段然后它正常工作。所以我被引导相信我在将char *缓冲区复制到我的结构中时出错了。

任何人都可以查明我做错了什么以及如何解决它?我已经坚持了一段时间,谢谢。

0 个答案:

没有答案