我正在尝试模拟 FAT8 File_Allocation_Table。FAT 条目从 -1 到 255 不等。目录条目包含特定目录的 FAT 表的起始地址。
每当起始地址大于 127 时,它就会给出一个负数。负数可以通过 offset 转换为 +ve 数。但是当条目包含 -1 和 255 时,这个问题对我来说变得很困难,因为它们都给出了相同的值。
如何处理这种情况?
#include<bits/stdc++.h>
#define SIZE 256
using namespace std;
struct Dir{
char fname[SIZE]; //File Name
char start;//1st entry in FAT
char end;//Last entry in FAT
}dir;
char FAT[SIZE];
int NoOfFile;
char dfname[ ]="dir.txt";
int main(){
ofstream fout;
ifstream fin;
char name[256];
cout<<"Enter file name\n";
cin>>name;
dir.start=255;
dir.end=3;
strcpy(dir.fname,name);
fout.open(dfname);
fout.write((char*)&dir,sizeof(dir));
fout.close();
fin.open(dfname);
fin.read((char*)&dir,sizeof(dir));
cout<<dir.fname<<" "<<(int)dir.start<<" "<<(int)dir.end<<"\n";
fin.close();
return 0;
}