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

📄 dos.c

📁 本程序是模拟DOS系统下创建目录
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>

#define NULL 0
#define TRUE 1
#define FALSE 0

typedef struct Folder
{
    char FolderName[10];
    struct Folder *ChildFolder;
    struct Folder *BrotherFolder;
    struct Folder *ParentFolder;
}Folder;

Folder *pFolder;

Folder *CreateDisk()
{
    Folder *pFolder;
    pFolder=(Folder *)malloc(sizeof(Folder));
    if(!pFolder)
    {      
        return NULL;
    }
    else
    {
    pFolder->ChildFolder=NULL;
    pFolder->ParentFolder=NULL;
    pFolder->BrotherFolder=NULL;
    strcpy(pFolder->FolderName,"Localhost");
    return pFolder;
    }
}

Folder *CreateChildFolder(char FolderName[10])
{
    Folder *cFolder;
    cFolder=(Folder *)malloc(sizeof(Folder));
    if(pFolder->ChildFolder==NULL)
    {
        if(!cFolder)
        {
            printf("\nError!!!\nCan't create Folder!!");
            return NULL;
        }

        else
        {
            pFolder->ChildFolder=cFolder;
            cFolder->ParentFolder=pFolder;
            cFolder->ChildFolder=NULL;
            cFolder->BrotherFolder=NULL;
            strcpy(cFolder->FolderName,FolderName);
            return cFolder;
        }
    }
    if(pFolder->ChildFolder!=NULL)
    {
        if(!cFolder)
        {
            printf("\nError!!!\nCan't create Folder!!");
            return NULL;
        }
        else
        {
            pFolder=pFolder->ChildFolder;
            while(1)
            {
                if(pFolder->BrotherFolder==NULL)
                {
                    break;
                }
                else if(pFolder->BrotherFolder!=NULL)
                {
                    pFolder=pFolder->BrotherFolder;
                    continue;
                }
            }
            pFolder->BrotherFolder=cFolder;
            cFolder->ParentFolder=pFolder->ParentFolder;
            cFolder->ChildFolder=NULL;
            cFolder->BrotherFolder=NULL;
            strcpy(cFolder->FolderName,FolderName);
            return cFolder;
        }
    }
}

OpenChildFolder(char FolderName[10],int sum)
{
    if(pFolder->ChildFolder==NULL)
    {
        if(sum==1)
        {
            printf("\nThere is no childfolder in this folder!");
        }
    }
    else if(pFolder->ChildFolder!=NULL)
    {
        pFolder=pFolder->ChildFolder;
        do{
            if(strcmp(pFolder->FolderName,FolderName)==0)
            {
                break;
            }
            else
            {
                if(pFolder->BrotherFolder==NULL)
                {
                    if(sum==1)
                    {
                        printf("\nthere is no file!");
                    }
                    break;
                }
                if(pFolder->BrotherFolder!=NULL)
                {
                    pFolder=pFolder->BrotherFolder;
                    continue;
                }
            }
        }while(1);
    }
}

DIRoperation()
{
    Folder *searchFolder;
    int sum;
    printf("\n%s Folder!!\n",pFolder->FolderName);
    if(pFolder->ChildFolder==NULL)
    {
        printf("\n         no File!\n");
    }
    else
    {
        searchFolder=pFolder->ChildFolder;
        sum=0;
        do
        {
            printf("\n  %d    %s",&sum,searchFolder->FolderName);
            if(searchFolder->BrotherFolder==NULL)
            {
                sum++;
                printf("\n       %d files\n",sum);
                break;
            }
            else
            {
                searchFolder=searchFolder->BrotherFolder;
                sum++;
                continue;
            }
        }while(1);
    }
}

DelFolder(char FolderName[10])
{
    Folder *targetFolder;
    Folder *searchFolder;
    pFolder=pFolder->ParentFolder;
    targetFolder=pFolder->ChildFolder;
    if(strcmp(targetFolder->FolderName,FolderName)==0)
    {
        if(targetFolder->BrotherFolder==NULL)
        {
            pFolder->ChildFolder=NULL;
        }
        else
        {
            searchFolder=targetFolder->BrotherFolder;
            pFolder->ChildFolder=searchFolder;
        }
    }
    else
    {
        searchFolder=targetFolder->BrotherFolder;
        while(1)
        {
            if(strcmp(targetFolder->FolderName,FolderName)==0)
            {
                if(searchFolder->BrotherFolder==NULL)
                {
                    targetFolder->BrotherFolder=NULL;
                    break;
                }
                else
                {
                    searchFolder->BrotherFolder=searchFolder->BrotherFolder;
                    break;
                }
            }
            else
            {
                targetFolder=searchFolder;
                searchFolder=searchFolder->BrotherFolder;
                continue;
            }
        }
    }
}

Location()
{
    Folder *saveFolder;
    char loc[200];
    int i,mark;
    mark=0;
    for(i=0;i<200;i++)
    {
        loc[i]='\0';
    }
    saveFolder=pFolder;
    while(1)
    {
        i=0;
        while(saveFolder->FolderName[i+1]!='\0')
        {
            i++;
        }
        while(i>=0)
        {
            loc[mark]=saveFolder->FolderName[i];
            if(i==0)
            {
                loc[mark+1]=92;
                mark=mark+2;
                break;
            }
            else
            {
                i--;
                mark++;
            }
        }
        if(saveFolder->ParentFolder==NULL)
        {
            break;
        }
        else
        {
            saveFolder=saveFolder->ParentFolder;
            continue;
        }
    }

    printf("\n");
    mark--;
    while(mark>=0)
    {
        printf("%c",loc[mark]);
        if(mark==0)
        {
            break;
        }
        mark--;
    }
    printf(">");
}


MDoperation(int i,int mark,char order[50],char FolderName[10])
{
    while(order[mark]!='\0')
    {
        if(order[mark]==' ')
        {
            mark++;
            continue;
        }
        else if(order[mark]==92)
        {
            while(pFolder->ParentFolder!=NULL)
            {
                pFolder=pFolder->ParentFolder;
            }
            ++mark;
            while(1)
            {
                FolderName[i]=order[mark];
                if(order[mark+1]==92)
                {
                    mark=mark+2;
                    pFolder=CreateChildFolder(FolderName);
                    for(;i>0;i--)
                    {
                        FolderName[i]='\0';
                    }
                    continue;
                }
                if(order[mark+1]=='\0')
                {
                    pFolder=CreateChildFolder(FolderName);
                    for(;i>=0;i--)
                    {
                        FolderName[i]='\0';
                    }
                    break;
                }
                ++i;
                ++mark;
            }
            menu();
            break;
        }
        else if(order[mark]<=122&&order[mark]>=65)
        {
            while(1)
            {

⌨️ 快捷键说明

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