資源簡介
操作系統課程設計 操作系統課程設計 文件管理 C 附實驗報告

代碼片段和文件信息
#include?
#include?
#include?
#include?
#define?FILENAME_LEN?21
#define?INPUT_LEN?81
#define?COMMAND_LEN?11
//結點結構
struct?FileNode?
{
char?filename[FILENAME_LEN];//文件名/目錄名
int?isdir;//目錄文件識別標志
int?i_nlink;//文件的鏈接數
int?adr;//文件的地址
struct?FileNode?*parent?*child;//指向父親的指針和指向左孩子的指針
struct?FileNode?*sibling_prev?*sibling_next;//指向前一個兄弟的指針和指向
//后一個兄弟的指針.
};
void?Init();//初始化文件樹
int?ParseCommand();//接受輸入的命令并把其分解成操作名和路徑文件名
void?ExecuteCommand();//執行命令
int?cdComd();//處理cd命令
int?editComd();//處理edit命令
int?delComd();//處理del命令
int?rdComd();//處理rd命令
int?dirComd();//處理dir命令
int?mdComd();//處理md命令
int?FindPath(char?*ph);//尋找參數ph所指向的路徑
//從參數Para2中找到要建立或刪除的文件、目錄名,并把指針指向其父親結點
int?FindFilename(char?Para2[]);
struct?FileNode*?CreateFileNode(char?filename[]int?isdirint?i_nlink);//創建結點
int?GetInput(char*?bufferunsigned?int?buffer_len);//獲取輸入
int?CheckCommand();//命令檢查
int?GetDir(int?beginchar*?pathchar*?curDir);//獲取路徑
void?Trim(char*?str);
struct?FileNode?*?cp?*tp?*root*upper;
char?path[INPUT_LEN-COMMAND_LEN];//記錄當前走過的路徑
char?curpath[INPUT_LEN-COMMAND_LEN]Para1[COMMAND_LEN]
????Para2[INPUT_LEN-COMMAND_LEN]tmppath[INPUT_LEN-COMMAND_LEN];
char?filename[FILENAME_LEN]dirname[FILENAME_LEN]tmp;
int?ij;
//主函數
int?main()
{
Init();//初始化文件樹
while(1)
{
if(ParseCommand())//分解命令
ExecuteCommand();//執行命令
}
}
//執行命令子函數
void?ExecuteCommand()
{
int?sign;
????????????//根據參數Para1調用相應的功能處理模塊
if(strcmp(Para1“cd“)==0)?
sign=cdComd();????????????//cd命令
else?if(strcmp(Para1“edit“)==0)?
sign=editComd();?????????//edit命令
else?if(strcmp(Para1“del“)==0)?
sign=delComd();??????????//del命令
else?if(strcmp(Para1“dir“)==0)?
sign=dirComd();??????????//dir命令
else?if(strcmp(Para1“md“)==0)?
sign=mdComd();?????????//md命令
else?if(strcmp(Para1“rd“)==0)?
sign=rdComd();???????????//rd命令
else?if(strcmp(Para1“exit“)==0)
exit(0);?????????????????????????//exit命令
else
printf(“命令錯誤請重試\n“);??//命令輸入不正確,報錯
}
//創建結點
struct?FileNode*?CreateFileNode(char?filename[]int?isdirint?i_nlink)
{
//申請結點空間
????struct?FileNode*?node=(struct?FileNode*)malloc(sizeof(struct?FileNode));
//相應內容賦初值
????strcpy(node->filenamefilename);
node->isdir=isdir;
node->i_nlink=i_nlink;
node->parent=NULL;
node->child=NULL;
node->sibling_prev=NULL;
node->sibling_next=NULL;
????return?node;
}
//初始化文件樹
void?Init()
{
struct?FileNode?*bin*usr*unix*etc;
strcpy(path“/“);??????????//根目錄為當前目錄
////////////////////////////////////////////////////////////////////////
/////////////////////創建初始目錄結點///////////////////////////////////
bin?=?CreateFileNode(“bin“10);
usr?=?CreateFileNode(“usr“10);
unix?=?CreateFileNode(“unix“00);
etc?=?CreateFileNode(“etc“10);
root?=?cp?=?tp?=?CreateFileNode(“/“10);
////////////////////////////////////////////////////////////////////////
/////////////////////創建初始目錄結點結束///////
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3766??2008-07-02?13:09??大型實驗\filesys\Debug\BuildLog.htm
?????文件?????454656??2008-07-02?13:08??大型實驗\filesys\Debug\filesys.exe
?????文件????????406??2008-07-02?13:08??大型實驗\filesys\Debug\filesys.exe.em
?????文件????????472??2008-07-02?13:08??大型實驗\filesys\Debug\filesys.exe.em
?????文件????????381??2008-07-02?13:07??大型實驗\filesys\Debug\filesys.exe.intermediate.manifest
?????文件??????37235??2008-07-02?13:07??大型實驗\filesys\Debug\filesys.obj
?????文件????2051072??2008-07-02?13:08??大型實驗\filesys\Debug\filesys.pdb
?????文件?????????67??2008-07-02?13:08??大型實驗\filesys\Debug\mt.dep
?????文件??????53248??2008-01-14?19:24??大型實驗\filesys\Debug\vc60.pdb
?????文件??????53248??2008-07-02?13:09??大型實驗\filesys\Debug\vc90.pdb
?????文件??????15922??2008-07-02?13:09??大型實驗\filesys\filesys.c
?????文件???????4294??2008-01-13?15:25??大型實驗\filesys\filesys.dsp
?????文件????????522??2008-01-13?15:19??大型實驗\filesys\filesys.dsw
?????文件?????371712??2008-07-02?13:27??大型實驗\filesys\filesys.ncb
?????文件??????53760??2008-01-14?19:26??大型實驗\filesys\filesys.opt
?????文件???????2672??2008-01-14?19:24??大型實驗\filesys\filesys.plg
?????文件???????3072??2008-07-02?13:27??大型實驗\filesys\filesys.suo
?????文件???????5201??2008-07-02?13:06??大型實驗\filesys\filesys.vcproj
?????文件???????1427??2008-07-02?13:09??大型實驗\filesys\filesys.vcproj.LENOVO-03045314.litianxiang.user
?????文件??????45056??2007-12-29?11:57??大型實驗\osfile.doc
?????文件?????126464??2008-01-13?18:52??大型實驗\實驗報告.doc
?????目錄??????????0??2008-07-07?22:20??大型實驗\filesys\Debug
?????目錄??????????0??2008-07-07?22:20??大型實驗\filesys
?????目錄??????????0??2008-07-07?22:20??大型實驗
-----------?---------??----------?-----??----
??????????????3284653????????????????????24
評論
共有 條評論