我正在从磁盘映像读取二进制数据,当buffer[0]等于3时,RootDirectory[j]的状态成员应为'F'。但是,当我运行代码时,值是0。不过,每次应该输入if语句时都会输入if语句(chartest==3(。
typedef struct{
char Status;
int StartingBlock;
int BlockNumbers;
int FileSize;
int CreateTime;
int ModifyTime;
char FileName[31];
}RootDirectory;
RootDirectory *Dir = (RootDirectory*)malloc(sizeof(RootDirectory)* RootNum);
char buffer1[50];
int chartest;
int j = 0;
int RootBytes = Info.RootDirectoryBlocks * Info.BlockSize;
int DirectoryEntries = RootBytes/64;
for(int i = 0; i < DirectoryEntries; i++){
int statusread = fread(buffer1, 1,1, fp);
if((int) buffer1[0] == 0){
fseek(fp, 63, SEEK_CUR);
}
else{
chartest = (int)buffer1[0];
if(chartest == 3){
Dir[j].Status = 'F';
}
fseek(fp, 63, SEEK_CUR);
j++;
}
}
for(int i = 0; i < j; i++){
printf("%cn", Dir[j].Status);
}
它应该是最后一个循环中的printf("%cn", Dir[i].Status);
。非Dir[j].Status