gpt4 book ai didi

linux - 如何在c linux中将绝对路径转换为相对路径

转载 作者:太空狗 更新时间:2023-10-29 11:46:39 24 4
gpt4 key购买 nike

我想知道如何在 linux (Ubuntu) 操作系统上用 c 语言根据给定目录(包括链接文件)将符号链接(symbolic link)的绝对路径转换为相对路径。

我想搜索相对路径的子字符串,但如果它已经存在于文件夹层次结构的更高位置怎么办?

这里是我想做的更具体的描述:相对路径:

 folder/folder1/folder2

绝对路径:

/home/giorgos/Desktop/folder/folder1/folder2/a.pdf

改为

/home/giorgos/Desktop/myfolder/folder1/folder2/a.pdf

显然我不能简单地搜索并替换“folder/”,请考虑这种情况:

/home/giorgos/Desktop/folder/folder/folder/folder1/folder2/a.pdf

它可以向前和向后搜索,如果替换它仍然会给出错误的输出只有当我知道相对路径我可以向后搜索绝对路径并替换它时,输出才是正确的:

   /home/giorgos/Desktop/folder/myfolder/folder/folder1/folder2/a.pdf

最佳答案

将路径转换为相对路径是首先查看两条路径之间共享多少基本原子,然后插入 ../以在向下导航到正确的分支之前向后向上导航树。 IE 从:/foo/bar/some/path/foo/other/path 你会首先看到它们共享/foo,向上导航到那个点你需要 3 ../,把相对路径变成 /foo/../../../other/path 。有一个用于 C++ 的 boost::filesystem 示例 here ,除了 C++ 和 boost::filesystem,同样可以在 C 中完成。

关于linux - 如何在c linux中将绝对路径转换为相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9663845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com