⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 此源代码是实现操作系统的文件模拟
💻 TXT
字号:
#include <stdio.h>
#include <malloc.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#define Usernum  3
#define Filenum  6
#define Opennum  2

typedef struct
{
	char filename;
	int right;       //0-可读 1-可写 2-可读写
	int length;
	int flag;       //标志文件是否被打开
}Ufd;
Ufd UFD[Filenum];

typedef struct 
{
   	char username[10];
	//int startaddress;
	int count;
	Ufd UFD[Filenum];
}Mfd;
Mfd MFD[Usernum];

void Incitialize()
{
	int i,j;
	for(i=0;i<Usernum;i++)
	{
		MFD[i].UFD[j].filename=NULL;
		MFD[i].UFD[j].flag=0;
		MFD[i].UFD[j].length=0;
		MFD[i].UFD[j].right=3;
	}
}

void READ()
{
}

void create(int k)
{
	int i=0,length,right;
	char name;
	printf("请输入文件名:");
	cin>>name;
	while(i<Filenum)
		if(MFD[k].UFD[i].filename!=NULL)
		{
			if(MFD[k].UFD[i].filename==name)
			{
				printf("该文件已经存在!");
				return;
			}
			i++;
		}
		else break;
	if(i==Filenum)
	{
		printf("用户文件已满,不可再创建!");
		return;
	}
	printf("请输入文件的长度和权限:");
	cin>>length;
	cin>>right;
	for(i=0;i<Filenum;i++)
	{
		if(MFD[k].UFD[i].filename==NULL)
		{
			MFD[k].UFD[i].filename=name;
			MFD[k].UFD[i].length=length;
			MFD[k].UFD[i].right=right;
			printf("创建成功!");
			break;
		}
	}
}

void open(int k)
{
	int i=0;
	char name;
	printf("请输入文件名:");
	cin>>name;
	while(i<Filenum)
		if(MFD[k].UFD[i].filename==name)
		{
			printf("文件已经打开!");
			MFD[k].UFD[i].flag=1;
			return;
		}
		else
			i++;
	if(i==Filenum)
		printf("不存在该文件!\n");
}

void close(int k)
{
	int i=0;
	char name;
	printf("请输入文件名:");
	cin>>name;
	while(i<Filenum)
		if(MFD[k].UFD[i].filename==name)
			if(MFD[k].UFD[i].flag==1)
			{
				printf("文件已经成功关闭!\n");
				MFD[k].UFD[i].flag=0;
				return;
			}
			else 
			{
				printf("文件本已处于关闭状态!\n");
				return;
			}
		else i++;
	if(i==Filenum)
		printf("不存在该文件!\n");
}

void Read(int k)
{
	int i=0;
	char name;
    printf("请输入文件名:");
	cin>>name;
	while(i<Filenum)
		if(MFD[k].UFD[i].filename==name)
			if(MFD[k].UFD[i].right==0||MFD[k].UFD[i].right==2)
				if(MFD[k].UFD[i].flag==1)
				{
					printf("文件已经成功读取!\n");
					return;
				}
				else 
				{
					printf("文件处于关闭状态!请先执行打开命令再进行读取!\n");
					return;
				}
			else
			{
				printf("对该文件没有读权限!\n");
				return;
			}
		else i++;
	if(i==Filenum)
		printf("不存在该文件!\n");
}

void Write(int k)
{
	int i=0;
	char name;
    printf("请输入文件名:");
	cin>>name;
	while(i<Filenum)
		if(MFD[k].UFD[i].filename==name)
			if(MFD[k].UFD[i].right==0||MFD[k].UFD[i].right==1)
				if(MFD[k].UFD[i].flag==1)
				{
					printf("文件已经成功写入!\n");
					return;
				}
				else 
				{
					printf("文件处于关闭状态!请先执行打开命令再进行写入!\n");
					return;
				}
			else
			{
				printf("对该文件没有写权限!\n");
				return;
			}
		else i++;
	if(i==Filenum)
		printf("不存在该文件!\n");
}

void main()
{
	//char user[10];
	int i,order,use;
	/*READ();
	Incitialize();
	printf("请输入用户名:\n");
	scanf("%s",user);
	for(i=0;i<Usernum;i++)
		if(strcmp(user,MFD[i].username)==0)
			break;
    if(i==Usernum)    
	{
		printf("对不起,不存在该用户的信息!\n");
		exit(0);
	}*/
//	Incitialize();
	printf("请选择用户(1  2  3):");
	scanf("%d",&use);
	printf("请输入对文件的命令:\n1:建立\n2:打开\n3:关闭\n4:读\n5:写\n6:退出\n");
	scanf("%d",&order);
	while(order!=6)
	{
		switch(order)
		{
		case 1:
			create(use);break;
		case 2:
			open(use);break;
		case 3:
			close(use);break;
		case 4:
			Read(use);break;
		case 5:
			Write(use);break;
		}
		printf("\n请输入对文件的命令:\n1:建立\n2:打开\n3:关闭\n4:读\n5:写\n6:退出\n");
	    scanf("%d",&order);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -