版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)文件管理C代碼Standardization ofsany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#include<stack> using namespace std;#define BLKSIZE 512.n");printf("WARNING:ALL DATA ON THIS FILESYSTEM WILL BE LOST!n");printf (''Proceed with Format(Y/N)");scanf(“c", &choice);getchar ();i
2、f (choice 二二'y') (choice 二二'Y')if(fp=fopen(image_name, "w+b")二二 NULL)printf ("Cdn't create file %sn/z, image_name); exit(-1);for(i = 0; i < BLKSIZE; i+)fputc" 0, fp);二 0;strcpy, 7");二d,;strcpy, 7");二 0;二 0;0二-1;11 二-1;fwrite(&inode, sizeof(Ino
3、de), 1, fp);二-1;for(i 二 0; i < 31; i+)fwrite(&inode, sizeof(Inode), 1, fp);for(i 二 0; i < BLKNUMBLKSIZE; i+)fputc('0', fp);fclose(fp);n", file_name);printf (''This filesystem not exist, it will be create!n/?);format ();login ();while(!feof(fp)fread(&user, sizeof(Us
4、er), 1, fp); n );flag 二 1;fclose(fp);break;if(flag 二二 0) break;while(flag);rT, image_name);exit(-1);num = T;);exit (T);bitmapi二1'if(fp=fopen(image_name, "r+b")二二 NULL)printf (zzCan,t open file %sn: image_name); exit (T);fseek(fp, i, SEEK_SET);fputc(, r, fp); fclose(fp);return i;ength;a
5、ddO = inode_arraynumaddress0;if(len > 512)addl = inode_arraynumaddress1;if(fp = fopen(image_name, "r+b")二二 NULL)printf ("Can't open file %s. n", image_name);exit (-1);fseek(fp, BLKSIZE+INODESIZE*INODENUM +addO*BLKSIZE, SEEK.SET);ch 二 fgetc(fp);for(i=0; (i < len) &&a
6、mp; (ch != ' 0)&& (i < 512); i+)ch 二 fgetc(fp);辻(i >= 512)fseek(fp,BLKSIZE+INODESIZE*INODENUM+addl*BLKSIZE, SEEK.SET);ch = fgetc(fp);for(; (i < len) && (ch '0'); i+)tempi = ch;ch = fgetc(fp);tempi = ' 0'fclose(fp); ddress 0;len = inode_arraynumlength;if(f
7、p = fopen(image_name, :r+b") = NULL)printf CCan t open file %s. rT,image_name);exit (-1);fseek(fp, BLKSIZE+INODESIZE*INODENUM+addO>:<BLKSIZE, SEEK.SET);for (i=0; (i<len)&&(tempi !=, 0J )&&(i < 512); i+)fputc(tempi, fp);辻(i 二二 512)addl = inode_arraynumaddress1;fseek(f
8、p, BLKSIZE+INODESIZE*INODENUM+add1*BLKSIZE, SEEK_SET);for(; (i < len) && (tempi != '0); i+) fputc(tempi, fp);fputc(, 0, fp);fclose(fp);num = 0)strcpy(path,;elsestrcpy(path,;m=0;n=inum_cur;while(m != inum_cur)whi1e(inodearrayniparent != m)n = inode_arrayniparent:strcat(path,"/&quo
9、t;);strcat(path, inode_arrayn. file_name); m = n;n 二 inum_cur;printfC%s$”, path);或者 cd dirl)void cd(void)int i;if(argc != 2)printf("Command cd must have two args. n");return ;if(! strcmp (argv1,"")inum_cur = inode_arrayinum_curiparent;elsefor(i = 0; i < INODENUM; i+)if(inode_a
10、rrayi inum>0)&&(inode_arrayi type二二'd,)&&(inode_arrayi iparent二二inum_cu:r)&&!strcmp(inode_arrayi f訂e_name,argvl)&&! strcmp (inode_array i user_ndnie,)break;辻(i 二二 INODENUM)printfC'This directory isn't exsitedn);elseinumcur = i;n");return ;num> 0
11、) &&(inode_arrayiiparent = inum_cur)&&!strcmp(inode_arrayi user_name,)if(inode_arrayi type = ' d)dcount+;printf C,%-20s<DIR>n/ inode_arrayi file_name);elsefcount+;bcount+=inode_arrayilength;printf Cz%-20s%12d bytes'n",inode_arrayi filename, inode_arrayi length);pri
12、ntf (zzn%d file(s)%lld bytesnz,, fcount, bcount);printf C%d dir(s) %lld bytesFreeSpacen/z, dcount, 1024*1024-bcount);n");return ;num < 0) break;辻(i 二二 INODENUM)printf (Z/Inode is full. rT);exit(-1);inode_arrayiinum 二 i;strcpy(inode_arrayi file_ndme, argvl);inode_arrayitype 二'd'strcpy
13、 (inode_array i usei?_ndnie,;inode_arrayiiparent = inum_cur;inode_arrayilength = 0;save_inode(i););return ;for(i = 0; i < INODENUM; i+)if(inode_arrayiinum > 0) &&(inode_arrayi. type 二二'f') &&!strcmp(inode_arrayi. file_name, argvl)printf (''This file is exsit. n&
14、quot;);return ;for(i = 0; i < INODENUM; i+)if(inode_arrayi. inum < 0) break;辻(i 二二 INODEXUM)printf (,zInode is full. n");exit(-1);inode_arrayi. inum = i;strcpy(inode_arrayi. file_name, argvl);inode_arrayitype 二'f'strcpy(inode_arrayi user_ndme,;inode_arrayiiparent = inum_cur;inode_
15、arrayilength = 0;save_inode(i);n");return ;for(i = 0; i < INODENUM; i+)if(inode_arrayiinum > 0) &&(inode_arrayi type = F) &&!strcmp(inode_arrayi filename, argvl)&&! strcmp (inode_array i user_name,)break;if(i 二二 INODENUM)printf (z,The file you want to open doesn
16、9;t exsited );return ;inum = i:printf (''Please input open mode: (1: read, 2: write, 3: read and write):);scanf&mode);getchar ();辻(mode < 1) (mode >3)printf (/z0pen mode is wrong );return;for(i 二 0; i < FILENUM; i+)if(file_arrayiinum < 0) break;if(i 二二 FILENUM)printf (Z/The f
17、ile table is full, please close some file );return ;filenum 二 i;f i1e_arrayf i1enuminum = inum;strcpy(file_arrayfi1enum file_ndme, inode_arrayinum. file_name);f i1e_arrayf i1enummode = mode;printf ('"Open file %s by "、fi 1 e_arrayfi 1 enumf訂e_name);if (mode = 1) printf (z,read only. n&
18、quot;);else if(mode = 2) printf("write only.n");else printf C'read and write rT);n");return;for(i = 0; i < FILENUM; i+)if(file_arrayiinum > 0) &&!strcmp(fi1e_arrayi file_name, argvl) break;辻(i 二二 FILENUM)printf("Open %s firstn, argvl);return ;else if(file_arrayi
19、.mode = 2)printf ("Can't read %s. n,argvl);return ;inum = file_arrayiinum;printf (z,The length of %s:%d n", argvl, inode_arrayinumlength);if(inode_arrayinumlength > 0)read_blk(inum);for(i = 0; (i < inode_arrayinumlength) && (tempi != '0); i+) printf (,/%c, tempi);n&qu
20、ot;);return ;for(i = 0; i < FILENUM; i+)if(file_arrayi. inum0)&&! strcmp(file_arrayi file_nanie, argvl) break;if(i 二二 FILENUM)printf ("'Open %s first rT, argvl);return ;else if(file_arrayi.mode = 1)printf CCan t write %s. n", argvl);return ;inum = file_arrayprintf ("The
21、 length of %s:%dnz/, inode_arrayinumfile_name,inode_arrayinum, length);if(inode_arrayinum1ength = 0)inode_arrayinum, address0 = get_blknum(); printf ("'Input the data(CTRL+Z to end):rT); wh訂e(i<1023&&(tempi二getchar()!=E0F) i+;length=strlen(temp)+1;inode_arrayinumlength二length;if(
22、length > 512)inode_arrayinum, address1 = get_blknum(); save_inode(inum);write_blk(inum);elseprintf (z,This file can't be writte n. rT);n");return ;for(i = 0; i < FILENUM; i+)! strcmp(filearray i fi 1 e_nanie, argvl) break;if(file_arrayiinum > 0) &&if(i 二二 FILENUM)printf (zz
23、This file doesn't be opened n"); return ;elsefilearray iinum = T;printf (z,Close %s success!n argvl);num = T;if(inode_arrayilength > 0)if(inode_arrayilength >= 512)release_blk(inode_arrayi address0);release_blk(inode_arrayi address1); save_inode(i);n");:return ;int n, t, i ;stack
24、<int> istk;for(i = 0; i < INODENUM; i+)num >=0) &&(inode_arrayiiparent = inum_cur)&&(!strcmp(inode_arrayi file_name, argvl)&&(! strcmp (inode_array i use:r_ndnie,)break;辻(i=INODENUM) puts ("Directory ERROR");else(n);while(!()t=();0;del(t);for(i = 0; i &l
25、t; INODENUM; i+)if(inode_arrayil. inum >=0) &&(inode_drrdyi. iparent 二二 t)(i);/功能:退出當(dāng)前用戶(logout)void logout ()printf (/zDo you want to exit this user (y/n)/z);scanf (z,%c/z, &choice);getchar ();if (choice = ') (choice = 'Y')printf CAnCurrent user has exited!nz,);login ();return ;/功能:退出文件系統(tǒng)(quit)void quit ()printf C'Do you want to exist (y/n);scanf (,z%c/z, &choice);getchar ();if (choice
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物聯(lián)網(wǎng)解決方案代理授權(quán)銷售合同范本4篇
- 2024銅門制安工程招投標(biāo)合同
- 2025年度校園文化節(jié)影視展贊助合同3篇
- 2025年歷史建筑圍墻修繕施工合同4篇
- 2025年度廚房設(shè)備翻新與性能提升合同3篇
- 2025年度智能大廈腳手架設(shè)計與施工一體化合同4篇
- 2025年cfg樁基施工綠色施工技術(shù)交流與合作合同3篇
- 2024銷售委托合同范本
- 2025年度出租車駕駛員權(quán)益保障合同3篇
- 2025年度新型冷鏈物流承包運(yùn)輸合同4篇
- 非誠不找小品臺詞
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 患者信息保密法律法規(guī)解讀
- 老年人護(hù)理風(fēng)險防控PPT
- 充電樁采購安裝投標(biāo)方案(技術(shù)方案)
- 醫(yī)院科室考勤表
- 鍍膜員工述職報告
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 保險行業(yè)加強(qiáng)清廉文化建設(shè)
- Hive數(shù)據(jù)倉庫技術(shù)與應(yīng)用
- 數(shù)字的秘密生活:最有趣的50個數(shù)學(xué)故事
評論
0/150
提交評論