我正在开发一个旨在为类创建文件系统的简单版本的项目。当我使用" 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 *缓冲区复制到我的结构中时出错了。
任何人都可以查明我做错了什么以及如何解决它?我已经坚持了一段时间,谢谢。