内存文件系统c/c++实现(VS2008)

本文介绍了使用C语言在内存中模拟文件系统的实现,重点探讨了链表和二叉树在文件管理和目录操作中的应用。在设计中,目录可以包含其他目录和文件,且删除或移动目录时会递归处理子目录和文件。尽管程序实现了基本功能,但作者意识到在大量节点情况下,递归可能导致性能下降,并考虑过使用名称链表以提高搜索效率,但为避免操作复杂性而未实施。
摘要由CSDN通过智能技术生成

刚刚做了这么一个题,用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值