⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 模拟DOS下FAT表的构造
💻 CPP
字号:
#include"file.h"

extern void write(char *tmpname,int tmplen);
extern void cover(char *tmpname,int tmplen);
extern void insert(char *tmpname,int insertpoint);

//文件结构数组
fileinfo file[FILENUM];
int filenum;//文件数量
int FAT[DISC],blankspace;//FAT表和剩余空间


int main(int argc,char *argv[])
{
	char tmpname[FILENAMELEN];
	int tmplen;//要写入文件长度
	int order;//命令

	filenum=0;
	//初始化FAT表
	for(int i=0;i<DISC;i++)
		FAT[i]=0;
	FAT[0]=FDF;
	FAT[1]=FFF;
	blankspace=98;

	while(1)
	{
		cout<<"Select the operation:"<<endl<<"1 for writing"<<endl<<"2 for inserting"<<endl;
		cout<<"other numbers to quit"<<endl;
		cin>>order;
		switch(order)
		{
			case 1:	cout<<"Input the name of the file"<<endl;
					cin>>tmpname;
					cout<<"Input the length of the file"<<endl;
					cin>>tmplen;
					//判断是否有重名文件
					for(i=0;i<filenum;i++)
						if(strcmp(file[i].filename,tmpname)==0)	
						{	//若同意覆盖,则进入覆盖函数,否则进行下一次操作
							cout<<"Cover the quondam file?(y/n)"<<endl;
							char tmpch=getchar();
							if(tmpch == 'y' || tmpch == 'Y')
							{
								cover(tmpname,tmplen);
								break;
							}
							else break;
						}
					//若无重名文件则写入,写入前判断是否有足够空间
					if(tmplen>blankspace)
					{
						cout<<"not enough space!"<<endl;
						break;
					}
					if(i==filenum)		write(tmpname,tmplen);
					break;
			case 2:	cout<<"Input the name of the file"<<endl;
					cin>>tmpname;
					int insertpoint;
					cout<<"Input the breakpoint of the file"<<endl;
					cin>>insertpoint;
					for(i=0;i<filenum;i++)
						if(strcmp(file[i].filename,tmpname)==0)	
							break;
					if(i==filenum)
					{
						cout<<"There isn't the file with this name"<<endl;
						break;
					}
					//若无空间,则不插入
					if(blankspace==0)
					{
						cout<<"not enough space!"<<endl;
						break;
					}
					insert(tmpname,insertpoint);
					break;
			default :break;
		}

		//询问是否继续输入命令
		cout <<endl<<endl<<endl<< "Go on?(y/n)"<<endl;
		fgets(tmpname, sizeof(tmpname), stdin);
		
        if(*tmpname != 'y' && *tmpname != 'Y')
			return 0;
        putchar('\n');
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -