从节点到根遍历树,跟踪路径

我正在构建一个模拟文件系统的程序。它将虚拟文件和目录表示为树中的节点。我想在该树上实现一个版本的"pwd“命令作为一个函数。给定当前目录-我需要遍历树直到根目录,并跟踪完整路径;

我尝试了一些方法,但是我不能很好地处理内存分配问题。我会尽我所能帮助你的。谢谢!

下面是树结构和我的try -

typedef struct Node {
    char* nameOfTheFile;
    struct Node* firstChild;
    struct Node* nextSibling;
    struct Node* parent;
    int isFile;
} NODE;

NODE* root;
NODE* currentLocation; 

char* prepend(char* path, const char* toAdd, int lastWordBeforeRoot)
{

    char *newPath = (char*)malloc(strlen(path) + 3 + strlen(toAdd));
    strcat(newPath, path);

    if(!lastWordBeforeRoot && strcmp(toAdd, "/") != 0){
        strcat(newPath,"/");
    }
    strcat(newPath,toAdd);
    free(path);
    strcat(newPath, "\0");

    return newPath;
}

void pwd() {

    NODE* currentFolder = currentLocation;
    char* path = (char*)malloc(sizeof(char));

    while (currentFolder != NULL) {

        if (currentFolder->parent != NULL && strcmp(currentFolder->parent->nameOfTheFile, "/") == 0) 
        {

            path = prepend(path, currentFolder->nameOfTheFile, 1);
        }
        else 
        {
            path = prepend(path, currentFolder->nameOfTheFile, 0);
        }

        currentFolder = currentFolder->parent;

    }
    printf("%s \n", path);
}

转载请注明出处:http://www.tzjx69597577.net/article/20230526/1964934.html