乙個c語言寫的檔案系統

2021-07-05 06:10:59 字數 1669 閱讀 4247

# include "stdio.h"

# include "string.h"

# define maxsize 1000

# define shannum 320

char opr[10];

char fname[maxsize];

int i_length;

int n_index;

struct supiecesup;

struct inodeinode[maxsize];

struct datadata[maxsize];

void dowhat(char opr,char fname)   //根據輸入的命令進行相應的操作 

else if(!strcmp(opr,"delete"))

else

if(!strcmp(opr,"open"))

else

if(!strcmp(opr,"ls"))

else 

if(!strcmp(opr,"createdir"))

else

if(!strcmp(opr,"deletedir"))

else

if(!strcmp(opr,"ls_l"))

else

else }}

int existsfile(char e_fname)  //判斷檔案或目錄是否存在,存在則返回1,不存在則返回0 

}if(f==1)return 1;

if(f==0)return 0;

}int lookuppiece(int len)       //找到有效可占用的空閒物理塊號,將相應物理塊標誌位置1,並返回首物理塊號 

for(i=1;i<=shannum-11;i++)                      //對資料塊編號

inode[1].length=2048;                            //初始化根目錄區,長度為2048個位元組

strcpy(inode[1].name,temp2);                     //名稱為「.」

n=2048/512;

for(j=1;j<1+n;j++)                                //將對應塊標誌位置1,表示已占用

data[j].flags=1;            

inode[1].flags=1;                                  //設定對應根目錄區德inode表相關資訊

inode[1].f_d='d';

inode[1].number=data[1].number;

inode[1].ci=data[1].number/8;

}main()

else 

getch();

return 0;

}/*1.程式通過呼叫乙個遞迴函式re_deldir()完成多級目錄的刪除.*/

/*2.對檔案以及目錄的命名加強了限制:即普通檔案不能以'#'開頭,目錄檔案必須以'#'開頭.*/

/*不足:雖然目錄塊的索引錶可占有多個物理塊,但在具體實現時,僅對一塊進行了查詢.在查詢空閒塊時,用了first_fit演算法而不是磁碟排程演算法*/

/*補充:對於物理空間分配情況的檢視,可通過使用ls_l命令檢視相應物理塊號,結合塊長和檔案長度進行推算得知.*/

C語言的檔案系統

c檔案系統由若干互相聯絡的函式構成,這類函式要求包含標頭檔案。常用的緩衝檔案系統函式有 fopen 開啟乙個檔案 fclose 關閉乙個檔案 putc fputc 向檔案寫乙個字元 getc fgetc 從檔案中讀取乙個字元 fgets 從檔案中讀一字串 fputs 寫字串到檔案 fseek 寫檔案...

C語言寫乙個類

ifndef 50 2 h define 50 2 h typedef void demo demo demo create int i,int j int demo geti demo pthis int demo getj demo pthis int demo add demo pthis,i...

如何實現乙個檔案系統(六)

1 1 請參見 operation systems internals and design principles 一書第12章 2 2 扇區是磁碟的最小定址單元,而檔案塊是核心操作檔案的最小單位,乙個塊可以包含乙個或數個扇區。這些磁碟塊被讀入記憶體後即刻被存入緩衝中,同樣,檔案塊被寫出也要通過緩衝...