第一范文网 - 专业文章范例文档资料分享平台

文件管理系统C++

来源:用户分享 时间:2026/1/21 8:15:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink) {

struct FileNode* node=(struct FileNode*)malloc(sizeof(struct FileNode));//申请结点空间 //相应内容赋初值

strcpy(node->filename,filename); 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 *binNode,*usrNode, *unixNode,*etcNode,*libNode,*userNode, *binNode2,*liuNode,*sunNode,*ftiNode; strcpy(path,\根目录写入当前路径 //创建文件树的结点

binNode=CreateFileNode(\ usrNode=CreateFileNode(\ unixNode=CreateFileNode(\ etcNode=CreateFileNode(\ libNode=CreateFileNode(\ userNode=CreateFileNode(\ binNode2=CreateFileNode(\ liuNode=CreateFileNode(\ sunNode=CreateFileNode(\ ftiNode=CreateFileNode(\ cp=tp=root=CreateFileNode(\ //结点相应内容赋值 root->parent=NULL; root->child=binNode;

root->sibling_prev=root->sibling_next=NULL;

binNode->parent=root; binNode->child=NULL;

binNode->sibling_prev=NULL; binNode->sibling_next=usrNode;

usrNode->parent=NULL; usrNode->child=libNode;

usrNode->sibling_prev=binNode;

usrNode->sibling_next=unixNode;

9

unixNode->parent=NULL; unixNode->child=NULL;

unixNode->sibling_prev=usrNode; unixNode->sibling_next=etcNode;

etcNode->parent=NULL; etcNode->child=NULL;

etcNode->sibling_prev=unixNode; etcNode->sibling_next=NULL;

libNode->parent=usrNode; libNode->child=liuNode;

libNode->sibling_prev=NULL; libNode->sibling_next=userNode;

userNode->parent=NULL; userNode->child=NULL;

userNode->sibling_prev=libNode; userNode->sibling_next=binNode2;

binNode2->parent=NULL; binNode2->child=NULL;

binNode2->sibling_prev=userNode; binNode2->sibling_next=NULL;

liuNode->parent=libNode; liuNode->child=NULL;

liuNode->sibling_prev=NULL; liuNode->sibling_next=sunNode;

sunNode->parent=NULL; sunNode->child=NULL;

sunNode->sibling_prev=liuNode; sunNode->sibling_next=ftiNode;

ftiNode->parent=NULL; ftiNode->child=NULL;

ftiNode->sibling_prev=sunNode; ftiNode->sibling_next=NULL;

}

//获取文件或目录名,并把指针指向其父亲结点int FindFilename(char Para2[]) { i=strlen(Para2)-1;

10

j=0;

while(Para2[i]!='/'&& i>=0) {

filename[j]=Para2[i];

i--; j++;

}

filename[j]='\\0';//获得逆序的文件或目录名,存入filename中 if(i<0) Para2[i+1]='\\0';

else Para2[i]='\\0'; j--;

for(i=0;i

tmp=filename[i];

filename[i]=filename[j]; filename[j]=tmp; }

if(strlen(Para2)>0) { //查找路径 int sign=FindPath(Para2); if(sign==0) return 0;

}

return 1;

}

//缓冲区安全输入子函数

//如果输入超过buffer_len,则截取前buffer_len-1长度的输入, //buffer_len处字符用'/0'代替

int GetInput(char* buffer,unsigned int buffer_len) { unsigned int count=0; while(count

} count++;

}

while(getchar()!=10);

buffer[buffer_len-1]='\\0';

return -1; }

//改变目录函数

int cdComd() { if(!CheckCommand()) //命令检查 return 0;

if(strcmp(Para2,\ //对cd..命令的处理

int i;

11

while(cp->sibling_prev) cp=cp->sibling_prev; if(cp->parent)

{ cp=cp->parent; } //找到父亲结点 else

{ return 0; }

//对当前路径进行相应处理 i=strlen(path);

while(path[i]!='/'&&i>0) i--; if(i!=0) path[i]='\\0'; else path[i+1]='\\0';

}

else { FindPath(Para2);//查找路径 }

return 1;

}

//创建目录函数 int mdComd() { struct FileNode * temp,*tp; temp=CreateFileNode(\ int sign;

if(strlen(Para2)==0) { //参数不能为空 printf(\命令格式有错误.\\n\ return 0; }

if(strlen(Para2)>20) { //长度检查 printf(\目录名过长\\n\

return 0; }

//格式检查

if (!(isalpha(Para2[0])||Para2[0]=='_'||Para2[0]=='\\0'||Para2[0]=='/')) { printf(\目录名格式有错!\\n\目录首字母可以为'字母'或'数字'或'/'*/ return 0; }

sign=FindFilename(Para2); //获取目录名 if(sign==0)

return 0;

if(cp->isdir!=1) { //如当前指针指向的是文件,则报错 printf(\ return 0;

}

12

搜索更多关于: 文件管理系统C++ 的文档
文件管理系统C++.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3lhh03ha971xep036ol6_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top