文件系统实验报告(2)

2019-04-08 17:25

typedef struct afd{//AFD结构体 char filename[20];//文件名 int protect;//文件保护码 unsigned int point;//文件读写指针 struct afd *next; }AFD;

MDF *pmdf;//全局链表头指针 UFD *pufd; AFD *pafd;

char UserUFD[20];//已经登陆成功的用户名

void initMDF()//初始化MDF表 { FILE *fp; pmdf= (MDF*)malloc(sizeof(MDF)); MDF *p = pmdf; if((fp = fopen(\打开MDF文件 puts(\ exit(1); } while (!feof(fp)){//把MDF文件中的内容装入链表 p->next = (MDF*)malloc(sizeof(MDF)); p = p->next; fscanf(fp, \ fscanf(fp, \ } p->next = NULL; fclose(fp); }

void printUFD()//打印MDF表 { UFD *p = pufd->next; puts(\文件名\\t\\t保护码\\t\\t文件长度\\n\ while (p){ printf(\ printf(\ printf(\ p=p->next; }

}

void initUFD(char *name)//初始化UFD表 { FILE *fp; pufd= (UFD*)malloc(sizeof(UFD)); UFD *p = pufd; if((fp = fopen(name, \ puts(\ exit(1); } while (!feof(fp)){//建立UFD链表 p->next = (UFD*)malloc(sizeof(UFD)); p = p->next; fscanf(fp, \ fscanf(fp, \ fscanf(fp, \ fgetc(fp); } p->next = NULL; fclose(fp); }

int checkuser()//检测登陆的用户名 { char username[20]; while(1){ puts(\请输入用户名: \\n\ scanf(\ MDF *p = pmdf; while(p){ if(strcmp(username, p->username) == 0){ strcpy(UserUFD, p->filename); initUFD(p->filename); printUFD(); return 1; } p= p->next; } puts(\同户名不存在\\n\

} }

void initAFD()//初始化AFD { pafd = (AFD*)malloc(sizeof(AFD)); pafd->next = NULL; }

bool create()//创建文件命令 { char filename[20]; UFD *p = pufd->next; AFD *pa = pafd; puts(\请输入要创建的文件名: \\n\ scanf(\ while (p){ if(strcmp(filename, p->filename) == 0){ puts(\此文件已经存在了!\\n\ return 0; } if(!p->next) break; p= p->next; } p->next = (UFD*)malloc(sizeof(UFD)); p=p->next; strcpy(p->filename, filename); p->protect = 2; p->length = 0; p->next = NULL; while(pa->next){//创建文件后加入到AFD pa=pa->next; } pa->next = (AFD*)malloc(sizeof(AFD)); pa = pa->next; strcpy(pa->filename ,filename); pa->protect = 2; pa->point = 0; pa->next = NULL;

return 1; }

bool _delete()//删除文件命令 { char filename[20]; puts(\请输入要删除的文件名: \\n\ scanf(\ UFD *p = pufd; UFD *temp; while (p->next){ if(strcmp(filename, p->next->filename) == 0){ temp = p->next; p->next = p->next->next; free(temp); printf(\文件%s删除成功!\\n\ return 1; } p= p->next; } puts(\要删除的文件不存在!\\n\ return 0; }

bool open()//打开文件命令 { char filename[20]; unsigned int protect; puts(\请输入要打开的文件名: \\n\ scanf(\ puts(\请输入要打开的文件保护类型: \\n\ scanf(\ UFD *p = pufd->next; AFD *pa = pafd->next; while (pa){ if(strcmp(filename, pa->filename) == 0){ printf(\文件%s已经打开!\\n\ return 1; } if(!pa->next) break;

pa = pa->next; } if(!pa) pa=pafd; while (p){ if(strcmp(filename, p->filename) == 0){ pa->next = (AFD*)malloc(sizeof(AFD)); pa = pa->next; strcpy(pa->filename , p->filename); pa->protect = protect; if(protect == 1) pa->point = 0; else pa->point = p->length; pa->next=NULL; printf(\文件%s已经打开!\\n\ return 1; } p= p->next; } puts(\要打开的文件不存在!\\n\ return 0; }

void close()//关闭文件命令 { char filename[20]; UFD *pu = pufd->next; puts(\请输入要关闭的文件名: \\n\ scanf(\ AFD *p = pafd; AFD *temp; while (p&&p->next){ if(strcmp(filename, p->next->filename) == 0){ temp = p->next; p->next = p->next->next; if(temp->protect == 2){ while(pu){ if(strcmp(temp->filename, pu->filename) == 0){ pu->length =temp->point; break;


文件系统实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:自动售报机的设计-毕业设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: