刚刚做了这么一个题,用c语言模拟实现文件管理,做完之后对链表、二叉树的操作感觉帮助很大。
要求如下:
- 系统支持目录与文件。
- 目录可以包含其它目录与文件。
- 删除目录时,要求同时删除此目录包含的子目录和文件。
- 移动目录时,要求同时移动此目录包含的子目录和文件,并保证此目录下的子目录和文件层次结构不发生变化。
- 根目录为“root”,要求缺省存在。
- 除根目录(root),目录与文件有且仅有一个父目录。
- 目录名、文件名分别全局唯一,且大小写敏感。
- 目录、文件的个数没有限制。
#include <stdio.h>
#include<string.h>
#include <map>
#include <malloc.h>
#define NO 0
#define OK 1
//文件定义
struct file
{
char fileName[300];
struct file *nextf;
};
//目录定义
struct dir
{
char dirName[300];
struct dir* subDir;
struct dir* borDir;
struct dir* parDir;
struct file* fhead;
};
//全局根目录初始化
struct dir root={"root",NULL,NULL,NULL,NULL};
/*
功能描述:根据目录名获得目录指针
参数描述:DirName-目录名称 cur-当前目录指针
返回值:所查询目录名称的目录指针
*/
struct dir* getDirByName(const char*DirName,struct dir*cur)
{
if(NULL==cur)
return NULL;
if(0==strcmp(cur->dirName,DirName))
{
return cur;
}
struct dir*res;
res=getDirByName( DirName, cur->borDir);
if(NULL==res)
res=getDirByName( DirName,cur->subDir);
return res;
}
/*
功能描述:根据文件名获得文件指针
参数描述:FileName-文件名称 cur-当前目录指针
返回值:所查询文件名称的目录指针
*/
struct file*getFileByName(const char * FileName,struct dir*cur)
{
struct file