资源简介

采用一级目录结构实现磁盘文件操作。包括创建文件,打开文件,读写文件,删除文件等命令

资源截图

代码片段和文件信息

#include
#include
#include
using namespace std;

//WJH: 保护/操作方式
#define READ 1     //WJH: 可读/读文件
#define WRITE 2    //WJH: 可写/写文件
#define RWE 3      //WJH: 可读可写可执行/执行文件

//WJH: 文件状态
#define NEW 1    //WJH:新建
#define OPEN 2   //WJH:打开
#define CLOSE 3  //WJH:关闭

//WJH: 用户文件目录结构
typedef struct ufd  
{
char fileName[100];  //WJH: 文件名
int protectType;     //WJH: 文件保护方式READ表示文件可读WRITE表示文件可写RWE表示文件可读写执行
int fileMaxLength;   //WJH: 文件最大长度
int fileCurLength;   //WJH: 文件当前长度
int fileAddress;     //WJH: 文件所在地址
//int descriptor;    //WJH: 文件描述符
struct ufd *nextFile;//WJH: 指向下一个文件
}UFDNODE;

//WJH: 用户打开文件表结构
typedef struct uof
{
char fileName[100];   //WJH: 文件名
int operateType;      //WJH: 操作方式1代表读文件2代表写文件3代表执行文件
int pRead;            //WJH: 读指针
int pWrite;           //WJH: 写指针
int fileCurLength;    //WJH: 文件当前长度
int fileMaxLength;    //WJH: 文件最大长度
int fileStatus;       //WJH: 文件状态NEW为新建,OPEN为打开,CLOSE为关闭
//int descriptor;     //WJH: 文件描述符
struct uof *nextOpen; //WJH: 指向下一个打开文件
}UOFNODE;

UFDNODE * UFDList = (UFDNODE*)malloc(sizeof(UFDNODE));    //WJH: 用户文件目录表
UOFNODE * UOFList = (UOFNODE*)malloc(sizeof(UOFNODE));    //WJH: 用户打开文件表
int C = 0;     //WJH: 当前打开文件数计数器
int C1 = 10;   //WJH: 磁盘使用情况计数器
//int C2 = 0;    //WJH: 描述符计数器
char Disk[1024][64];  //WJH: 模拟磁盘,总大小为64KB
char disk[128];       //WJH: 磁盘位示图

void Initialize();                //WJH: 初始化
void PrintMenu();                 //WJH: 打印命令菜单
int CheckUFDExist(string name);   //WJH: 检查文件是否已经存在
int CheckUOFExist(string name);   //WJH: 检查文件是否已经打开
int Create( char _CMD[] );        //WJH: 新建文件命令
int Open( char _CMD[] );          //WJH: 打开文件命令
int Close( char _CMD[] );         //WJH: 关闭文件命令
int Write( char _CMD[] );         //WJH: 写文件命令
int Read( char _CMD[] );          //WJH: 读文件命令
int Delete( char _CMD[] );        //WJH: 删除文件命令


//*******************************************************************************

//WJH: 主函数
int main()
{
char CMD[100];   //WJH: 保存命令
int fd;          //WJH: 文件描述符
string _CMD;
Initialize();

while(1)
{     
printf(“请输入您要执行的命令:\n“);
scanf(“%s“&CMD);
getchar();
switch( CMD[0] )
{
case ‘o‘:
case ‘O‘:
fd = Open( CMD );
if( fd!=-1 )
printf(“文件描述符fd = %d\n\n“fd);
break;

case ‘r‘:
case ‘R‘:
Read( CMD );
break;

case ‘w‘:
case ‘W‘:
Write( CMD );
break;

case ‘d‘:
case ‘D‘:
Delete( CMD );
break;

case ‘c‘:
case ‘C‘:
_CMD = CMD;
if( _CMD.length() > 6 && _CMD.substr(07) == “create(“)
{
fd = Create( CMD );
if( fd != -1)
printf(“文件描述符fd = %d\n\n“fd);
}
else if( _CMD.length() > 5 && _CMD.substr(06) == “close(“)
{
Close( CMD );
}
else
{
printf(“输入命令有误,请重新输入(需要帮助请输入help)\n\n“);
}
break;

case ‘h‘:
case ‘H‘:
PrintMenu();
break;

case ‘q‘:
case ‘Q‘:
return 0;
break;

default:

评论

共有 条评论