资源简介
模拟文件系统的c语言实现,操作系统课程设计必备
模拟文件系统的c语言实现,操作系统课程设计必备
代码片段和文件信息
#include “stdio.h“
#include
#include
#include
#include
#define blen 10//块大小
#define max 100//空间大小(物理块数)
#define filemax 100//文件最大长度
struct command//命令
{
char com[10];
}cmd[22];
struct blo//物理块
{
int n;//块号
char c[blen];//物理块大小
struct blo *next;//下一个物理块
}tblock[max];
typedef struct blo *block;
struct file//文件
{
char filename[20];
int length;
// char quan;//权限控制 a组 可读可写,b组可读不可写
struct blo *first;//文件的第一个物理块
struct file *next;//同目录下的下一个文件
};
struct dir//文件夹
{
char dirname[20];
struct dir *same;//同一级目录
struct dir *next;//下一级目录
struct file *firstfile;//该目录下的第一个文件
};
struct user
{
int quan;
char username[20];
struct user *next;
};
struct list//文件路径储存
{
struct dir *cur;
struct list *next;
};
struct blo idle;//空闲表 表头
struct dir root;//根目录
struct dir *cur_dir; //当前目录
struct list head;
struct user first;
int symbol=0;
void format() //格式化
{
int i;
for(i=0;i {
tblock[1].n=i;
tblock[i].next=&tblock[i+1];
}
tblock[max-1].next=NULL;
idle.next=&tblock[0];
strcpy(root.dirname“root“);
root.same=NULL;
root.next=NULL;
root.firstfile=NULL;
cur_dir=&root;
head.cur=&root;
head.next=NULL;
first.quan=2;
first.next=NULL;
strcpy(first.username“admin“);
symbol=0;
printf(“初始化完毕\n“);
printf(“进入文件模拟系统......\n\n“);
}
void read_system(FILE *fp) //读出系统文件的信息
{
}
char* read_file(char filename[]int q)//读出文件内容
{
struct file *tem=cur_dir->firstfile;
block tem1;
char tem2[filemax];
tem2[0]=‘\0‘;
int i=0;
while(tem!=NULL)
{
if(strcmp(tem->filenamefilename)==0)
{
tem1=tem->first;
if(q==1)
{
printf(“%s文件内容为:“filename);
}
while(tem1!=NULL)
{
// strcpy(tem2tem1->c);
// printf(“%s“tem2);
strcat(tem2tem1->c);
if(q==1)
{
printf(“%s“tem1->c);
}
tem1=tem1->next;
i=i+10;
tem2[i]=‘\0‘;
}
if(q==1)
{
printf(“\n“);
}
return tem2;
}
tem=tem->next;
}
if(q==1)
{
printf(“没有该文件,请检查后重新输入。\n“);
}
return NULL;
}
void write_system(FILE *fp) //读出系统文件的信息
{
}
void callback(int length) //回收磁盘空间
{
}
void allot(int length) //分配空间
{
}
void create_file(char filename[]char con[]int q) //创建文件
{
int len=strlen(con)/blen+1;
int n=0;
block tem1=&idle;
struct file *newf=(file *)malloc(sizeof(file));
struct file *tem=cur_dir->firstfile;
while(tem!=NULL)
{
if(strcmp(tem->filenamefilename)==0)
{
printf(“该文件已存在,请检查后重新输入。\n“);
return;
}
tem=tem->next;
}
tem=cur_dir->firs
评论
共有 条评论