我需要在c中创建一个函数来执行pwd函数在linux中的功能。我有一个表示文件夹的节点结构。每个人都有一个指向其父母的指针,所以它应该很容易,但我在这里死了。我以为我可以继续使用strcat将父节点的名称附加到路径名。但是,即使我能够使这个工作,我将留下一个反向的列表,我猜这很好。我至少可以解决这个问题。但是如果我在目录c中,其父级是b,其父级是父级是root,我应该能够使用pwd输出字符串“/ a / b / c”。我被卡住了。有任何想法吗?当我尝试使用strcat时,我会在ying yang上出现分段错误。
void pwd( ){
char *thePath;
NODE *nodePtr;
nodePtr = cwd;
while( nodePtr != root ){
}
printf("%s\n", thePath);
return;
}
答案 0 :(得分:1)
如果你想要的只是打印出路径,那么递归应该很容易。
void pwd_recurse (NODE *nodePtr)
{
if (nodePtr == root)
{
return;
}
pwd_recurse(nodePtr->parent);
printf("/%s",nodePtr->name);
}
void pwd()
{
///however you get the nodePtr;
pwd_recurse(nodePtr);
printf("\n");
}
这很好地回避了必须处理内存分配(虽然它确实意味着如果你有一个带循环的简并文件系统(在这里插入强制性的XKCD卡通),你将有一个stackoverflow,这可以说比无限循环好。)