• 大小: 602KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签: 文件管理  C  

资源简介

操作系统课程设计 操作系统课程设计 文件管理 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.embed.manifest

     文件        472  2008-07-02 13:08  大型实验\filesys\Debug\filesys.exe.embed.manifest.res

     文件        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


评论

共有 条评论