• 大小: 20KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: C/C++
  • 标签:

资源简介

模拟文件系统的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

评论

共有 条评论

相关资源