亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dfop.c

?? 磁盤文件操作 已在磁盤上劃分一定空間文件filesys.dat來模擬真實(shí)磁盤
?? C
字號(hào):


#include "stdio.h"
#include "conio.h"

struct filesys_superblk
{ /*文件系統(tǒng)的分區(qū)信息,存放在0#物理塊中*/
unsigned long fs_size; /*整個(gè)分區(qū)的總磁盤物理塊數(shù) */
unsigned long fs_freesize; /*分區(qū)的所有空閑磁盤物理塊數(shù) */
unsigned int fs_blocksize; /*文件系統(tǒng)的物理塊大小(字節(jié))*/
unsigned int fs_fat_start; /*FAT的起始磁盤物理塊號(hào) */
unsigned int fs_fat_size; /*FAT占用的磁盤物理塊數(shù)*/
unsigned int fs_dir_start; /*根目錄的起始磁盤物理塊號(hào)*/
unsigned int fs_dir_size; /*根目錄占用的磁盤物理塊數(shù)*/
unsigned int fs_data_start; /*數(shù)據(jù)區(qū)起始磁盤物理塊號(hào)*/
unsigned long fs_data_size; /*數(shù)據(jù)區(qū)的磁盤物理塊數(shù)*/
};




struct FILE_FCB
{ /*文件控制塊結(jié)構(gòu) */
char f_name[16]; /*文件名(16B)*/
short f_mode; /*文件屬性,-1表示未用 0表示目錄 1表示文件*/
unsigned int f_asize; /*文件分配的大?。ㄎ锢韷K數(shù))*/
unsigned long f_rize; /*文件占用的實(shí)際大?。ㄗ止?jié))*/
unsigned long f_addr; /*文件分配的第一個(gè)物理塊的塊號(hào)*/
unsigned int f_ctime; /*文件創(chuàng)建時(shí)間*/
unsigned int f_mtime; /*文件修改時(shí)間*/
};





struct open_file
{ /*當(dāng)前正在操作文件的幾個(gè)FCB數(shù)據(jù)項(xiàng) */
char f_name[12] ; /*文件名(16B) */
unsigned int f_asize; /*文件分配的大小(物理塊數(shù))*/
unsigned long f_rize; /*文件占用的實(shí)際大?。ㄗ止?jié))*/
unsigned long f_addr; /*文件分配的第一個(gè)物理塊的塊號(hào)*/
};







FILE *filesystem_p; /* 文件系統(tǒng)分區(qū)對(duì)應(yīng)的磁盤文件指針,系統(tǒng)運(yùn)行后文件一直打開,退出系統(tǒng)時(shí)關(guān)閉文件,所有的模擬文件系統(tǒng)操作都在此文件上進(jìn)行。*/
static struct filesys_superblk DiskInfo;/*文件系統(tǒng)的管理信息,系統(tǒng)運(yùn)行時(shí)一直存放在內(nèi)存,提供文件系統(tǒng)操作的參數(shù);*/
static struct FILE_FCB filedir[16]; /*臨時(shí)存放讀取的文件目錄,大小可以自己決定,但至少能夠存儲(chǔ)一個(gè)物理塊的信息,這里設(shè)置的是存儲(chǔ)一個(gè)物理塊的目錄項(xiàng)(實(shí)際的計(jì)算為:fs_blocksize/sizeof(struct FILE_FCB),這里是512/32=16,所以設(shè)置數(shù)組大小為16,也可以設(shè)為32,48,64等),在進(jìn)行建立文件/目錄、刪除文件/目錄、顯示文件/目錄、復(fù)制等文件操作時(shí),都首先將當(dāng)前讀出的目錄信息放到這里,然后進(jìn)行處理,處理完成后再讀取后面的信息再進(jìn)行處理,為簡(jiǎn)化處理,自己也可以把數(shù)組設(shè)置的比較大或采用動(dòng)態(tài)鏈表的方式存儲(chǔ)讀出的目錄信息。*/
static long fat[128]; /* 存放讀入內(nèi)存的FAT表信息,這里僅設(shè)置讀取一個(gè)物理塊的FAT數(shù)據(jù),自己可以設(shè)置的大一些,在進(jìn)行許多文件操作時(shí)都設(shè)計(jì)FAT的操作,設(shè)置小的時(shí)候可能要多次讀取FAT區(qū),大的時(shí)候少一些,也可以采用動(dòng)態(tài)內(nèi)存分配的方式,在系統(tǒng)啟動(dòng)時(shí)將整個(gè)FAT全部裝入內(nèi)存(FAT項(xiàng)數(shù)的計(jì)算公式為:fs_fat_size*256)。FAT的值定義如下:0為鏈的結(jié)束,-1為未使用,其它正值為鏈指針,這里未表示出壞的物理塊,可以自己根據(jù)需要添加。*/
static struct open_file sysopen_file; /* 系統(tǒng)打開文件數(shù)據(jù)結(jié)構(gòu),理論上應(yīng)該是數(shù)組 */
static char ReadBuffer[512]; /*讀數(shù)據(jù)緩沖區(qū);用于讀磁盤數(shù)據(jù)時(shí)的數(shù)據(jù)存儲(chǔ) */
static char WriteBuffer[512]; /*寫數(shù)據(jù)緩沖區(qū);用于寫磁盤數(shù)據(jù)時(shí)的數(shù)據(jù)存儲(chǔ)*/






/*分區(qū)的管理信息到內(nèi)存DiskInfo結(jié)構(gòu), 管理信息在格式化時(shí)存儲(chǔ)到FilesysInfo.dat 開始位置,即0#物理塊的開始處*/

void read_fs_superinfo() 
{ /*首先定位到文件開始處,然后直接讀取 */
rewind(filesystem_p);
fread(&DiskInfo,sizeof(struct filesys_superblk),1, filesystem_p);
return;
}





/*建立文件系統(tǒng)對(duì)應(yīng)的分區(qū)文件FilesysInfo.dat,其中要求指出分區(qū)大小和物理塊大小,也可以為簡(jiǎn)單起見,大小設(shè)置為512B,這里2個(gè)都要指出 */

void create_fs_sector()
{ /* 首先輸入分區(qū)大小(單位是KB)和塊大小(單位是B),然后計(jì)算需要向
分區(qū)文件FilesysInfo.dat里寫入的數(shù)據(jù)塊數(shù),執(zhí)行寫操作;數(shù)據(jù)塊數(shù)的計(jì)公式為:物理塊數(shù)=分區(qū)大小/塊大小 */
int i;
unsigned long disksize;
unsigned int blocksize;
unsigned long blknumber;
long blkbuffer[256]; /* 1KB大小的緩沖區(qū) */

for(i=0;i<256;i++) blkbuffer=0; /* 緩沖區(qū)賦0值 */

printf("\n please input size of disk: "); /*輸入分區(qū)大小*/
scanf("%lu", &disksize);

printf("\n please input size of block: "); /*輸入物理塊大小 如果固定大小512B則不需要輸入*/
scanf("%u", & blocksize);

rewind(filesystem_p);
for(i=0;i fwrite(blkbuffer,1024,1,filesystem_p); /* 向文件FilesysInfo.dat里寫入的數(shù)據(jù),建立disksize KB 大小的分區(qū)*/

blknumber=( disksize*1024)/ blocksize ; /*計(jì)算整個(gè)分區(qū)的總物理塊數(shù) */
DiskInfo.fs_size= blknumber; /*設(shè)置分區(qū)信息*/
DiskInfo.fs_freesize =blknumber;
DiskInfo.fs_blocksize= blocksize;

/* 更新磁盤分區(qū)信息到 FilesysInfo.dat*/

rewind(filesystem_p);
fwrite(&DiskInfo,sizeof(struct filesys_superblk),1, filesystem_p);
return;
}





void format_fs_sector()
{ /* 通過分區(qū)大小和物理塊大小計(jì)算出總物理塊數(shù),由此確定需要FAT的項(xiàng)數(shù),進(jìn)而計(jì)算出FAT區(qū)的大小(物理塊數(shù)),最后填寫DiskInfo數(shù)據(jù)結(jié)構(gòu),并寫回FilesysInfo.dat文件,在本例中,根目錄128項(xiàng),F(xiàn)CB占32B,所以根目錄區(qū)大小為128*32B ;另外,0#物理塊作為管理信息塊,所以實(shí)際能夠分配的物理塊從1#開始 */
long temp,i;
unsigned int dirsize;
unsigned int fatsize;
unsigned long blknumber;

/*系統(tǒng)總物理塊數(shù)*/
blknumber =DiskInfo.fs_size;

/*計(jì)算FAT需要占用的物理塊數(shù) */
fatsize= (blknumber*4)/DiskInfo.fs_blocksize + 1;

/*計(jì)算根目錄需要占用的物理塊數(shù) */
dirsize= 128*32/DiskInfo.fs_blocksize;

/*重新設(shè)置分區(qū)的管理信息結(jié)構(gòu)*/
DiskInfo.fs_freesize= blknumber- fatsize - dirsize - 1; /*總空閑物理塊數(shù)*/

DiskInfo.fs_fat_start =1; /*FAT的起始磁盤物理塊號(hào)*/
DiskInfo.fs_fat_size=fatsize; /*FAT占用的磁盤物理塊數(shù)*/

DiskInfo.fs_dir_start=fatsize+1; /*根目錄的起始物理塊號(hào)*/
DiskInfo.fs_dir_size=dirsize; /*根目錄占用的物理塊數(shù)*/

DiskInfo.fs_data_start=fatsize+dirsize+1;/*數(shù)據(jù)區(qū)起始磁盤物理塊號(hào)*/
DiskInfo.fs_data_size= blknumber- fatsize - dirsize-1; /*數(shù)據(jù)區(qū)的磁盤物理塊數(shù)*/

/* 格式化FAT, 直接寫-1*/

temp=-1;
fseek(filesystem_p,DiskInfo.fs_blocksize,0); /* 定位到1#*/
for(i=0;i fwrite(&temp,4,1,filesystem_p);

/* 格式化DIR區(qū), 屬性值為-1*/

filedir[0].f_mode=-1;
fseek(filesystem_p,DiskInfo.fs_dir_start*DiskInfo.fs_blocksize,0); /* 定位*/
for(i=0;i fwrite(&filedir[0],32,1,filesystem_p);


/* 更新磁盤分區(qū)信息到 FilesysInfo.dat*/
rewind(filesystem_p);/* 定位到文件開始處*/
fwrite(&DiskInfo,sizeof(struct filesys_superblk),1, filesystem_p);

return;

}






void filesys_init()
{ if((filesystem_p =fopen("Filesys.dat","rb+"))==NULL) /*文件存在?*/
{
/*不存在,建立模擬文件系統(tǒng)的數(shù)據(jù)文件FilesysInfo.dat*/
if((filesystem_p =fopen("Filesys.dat","wb+"))==NULL)
{ /*不能建立數(shù)據(jù)文件FilesysInfo.dat,結(jié)束程序*/
printf("\nerror on open Filesys.dat!");getch();exit(1);
}

/*能建立數(shù)據(jù)文件Filesys.dat,則由分區(qū)大小和物理塊大小真正建立文件系統(tǒng)分區(qū)*/
create_fs_sector(); /*建立文件系統(tǒng)分區(qū)*/
format_fs_sector();/*格式化文件系統(tǒng)分區(qū)*/
}
read_fs_superinfo();/*取文件系統(tǒng)分區(qū)的管理信息到內(nèi)存的DiskInfo中;*/
}






/* 讀物理塊到緩沖區(qū) */
read_block(long num, char *buf)
{
fseek(filesystem_p,num*DiskInfo.fs_blocksize,0); /* 定位num號(hào)物理塊到在文件中的位置*/
fread(&buf, DiskInfo.fs_blocksize ,1, filesystem_p); /* 讀物理塊到內(nèi)存緩沖區(qū)*/
}







/* 寫緩沖區(qū)數(shù)據(jù)到物理塊 */
write_block(long num, char *buf)
{
fseek(filesystem_p,num*DiskInfo.fs_blocksize,0); /*定位num號(hào)物理塊到在文件中的位置*/
fwrite(&buf, DiskInfo.fs_blocksize ,1 , filesystem_p); /* 寫內(nèi)存緩沖區(qū)到物理塊*/
}





main()
{
filesys_init();


} 
 
  

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一二三区| 成人免费看视频| 久久久久久久久免费| 色综合天天综合网国产成人综合天| 午夜精品一区二区三区电影天堂 | 国产成人丝袜美腿| 亚洲国产一区二区三区青草影视| 久久亚洲私人国产精品va媚药| 在线亚洲欧美专区二区| 福利电影一区二区三区| 日韩国产高清影视| 亚洲激情校园春色| 国产日韩精品一区| 欧美一区二区视频网站| 91网址在线看| 成人免费毛片嘿嘿连载视频| 日本女人一区二区三区| 亚洲黄色录像片| 国产精品久久久久四虎| 精品欧美一区二区久久| 6080yy午夜一二三区久久| 91视频国产资源| 顶级嫩模精品视频在线看| 久久成人免费网| 免费日韩伦理电影| 午夜日韩在线观看| 亚洲与欧洲av电影| 国产精品短视频| 国产精品日韩成人| 欧美极品xxx| 国产日韩欧美精品电影三级在线| 欧美不卡在线视频| 精品日韩在线一区| 日韩欧美一级片| 欧美一区二区三区免费视频| 欧美色精品天天在线观看视频| 91黄视频在线| 色94色欧美sute亚洲线路一久| 成人美女视频在线看| 顶级嫩模精品视频在线看| 国产成人精品综合在线观看| 国产美女在线观看一区| 国产美女精品在线| 国产经典欧美精品| 不卡av在线免费观看| a级精品国产片在线观看| 91在线国内视频| 色综合久久中文字幕| 欧洲精品中文字幕| 欧美美女bb生活片| 欧美一区日本一区韩国一区| 日韩亚洲欧美成人一区| 日韩欧美在线网站| 久久只精品国产| 久久一留热品黄| 国产精品国模大尺度视频| 最近日韩中文字幕| 一区二区免费视频| 日本欧美一区二区| 国产揄拍国内精品对白| 夫妻av一区二区| 欧洲国内综合视频| 欧美成va人片在线观看| 欧美韩日一区二区三区| 亚洲免费伊人电影| 免费人成黄页网站在线一区二区| 国内欧美视频一区二区| 成人精品视频一区二区三区尤物| 色婷婷国产精品| 91精品国产综合久久久蜜臀粉嫩 | 一区二区三区在线免费播放| 亚洲一区二区三区不卡国产欧美| 香蕉成人伊视频在线观看| 久久超碰97人人做人人爱| 成人免费看视频| 欧美日韩久久一区| 久久久不卡网国产精品一区| 亚洲天堂av老司机| 美国一区二区三区在线播放| 国产不卡一区视频| 欧美视频一二三区| 2024国产精品| 一区二区日韩电影| 国产精品一二三在| 在线观看视频一区二区| 精品久久久影院| 亚洲美女视频一区| 蜜臂av日日欢夜夜爽一区| 99久久婷婷国产综合精品电影 | 97成人超碰视| 91精品久久久久久久久99蜜臂| 中文字幕不卡在线| 亚洲18影院在线观看| 成人综合婷婷国产精品久久| 欧美日韩不卡在线| 国产精品乱人伦中文| 天堂成人免费av电影一区| 粗大黑人巨茎大战欧美成人| 91精品国产综合久久久久久| 亚洲欧洲av在线| 黑人巨大精品欧美黑白配亚洲| 色综合天天综合网天天狠天天| 久久亚洲一区二区三区四区| 亚洲第一福利一区| 99热精品国产| 久久久久国产免费免费| 三级亚洲高清视频| 91久久奴性调教| 国产精品不卡在线| 国产在线日韩欧美| 91精品国产乱码| 一区二区三区 在线观看视频| 丰满放荡岳乱妇91ww| 日韩美女视频一区二区在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 国产在线视频一区二区| 日韩欧美卡一卡二| 日韩高清在线电影| 欧美视频一区二区在线观看| 中文字幕日韩一区| 国产不卡视频在线播放| 精品处破学生在线二十三| 日精品一区二区| 欧美色综合影院| 亚洲精品日日夜夜| 91色视频在线| 综合久久久久综合| av影院午夜一区| 国产精品美女www爽爽爽| 国产一区二区精品久久| 久久人人97超碰com| 韩国中文字幕2020精品| 精品国产91乱码一区二区三区| 日本亚洲三级在线| 91精品欧美福利在线观看| 日韩中文字幕av电影| 91精品国产综合久久久久久久 | 亚洲一区二区三区四区五区中文| av电影一区二区| 亚洲欧洲一区二区三区| av在线不卡免费看| 亚洲免费色视频| 日本电影欧美片| 亚洲国产精品一区二区尤物区| 欧美在线色视频| 性久久久久久久久久久久| 欧美浪妇xxxx高跟鞋交| 蜜臀av在线播放一区二区三区| 欧美一区二区三区四区五区| 日本91福利区| 欧美精品一区二区高清在线观看| 51精品国自产在线| 日韩一区精品视频| 精品捆绑美女sm三区| 捆绑调教美女网站视频一区| 精品久久久久久综合日本欧美| 狠狠狠色丁香婷婷综合激情| 欧美激情一区在线| 99久久久无码国产精品| 伊人色综合久久天天人手人婷| 欧美亚洲愉拍一区二区| 免费观看日韩av| 中文字幕欧美三区| 欧美偷拍一区二区| 久色婷婷小香蕉久久| 国产日韩欧美一区二区三区综合| 91污在线观看| 日本中文字幕不卡| 国产亚洲一区二区三区| 99riav久久精品riav| 亚洲h精品动漫在线观看| 欧美精品一区视频| 色天使久久综合网天天| 麻豆久久一区二区| 亚洲视频一二三| 欧美大片一区二区| 成人av午夜影院| 天天色天天操综合| 国产欧美一区二区精品性色超碰| 91视频免费看| 久久成人久久鬼色| 亚洲免费伊人电影| 久久综合狠狠综合| 欧美少妇xxx| 成人av电影在线| 蜜臀av性久久久久蜜臀aⅴ| 国产精品免费人成网站| 日韩午夜精品视频| 一本色道亚洲精品aⅴ| 精品一区二区免费| 亚洲综合在线视频| 国产视频911| 欧美一区午夜精品| 91色婷婷久久久久合中文| 另类中文字幕网| 亚洲一区电影777| 国产亚洲成aⅴ人片在线观看| 欧美日韩日日骚| 成人教育av在线| 久久疯狂做爰流白浆xx|