gpt4 book ai didi

c - 在 C 中连接路径的跨平台方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 15:22:43 24 4
gpt4 key购买 nike

目前,我有一个 path_concat(char* path_fragment_a, char* path_fragment_b) 函数,它简单地将 path_fragment_aPATH_DIVIDER 连接在一起和 path_fragment_b。 (PATH_DIVIDER 是在 #ifdef block 中定义的,因此它在 Windows 上是 \ 而在其他任何地方都是 /。)

但我不禁想到这似乎是:

  • 有点乱。
  • 肯定会包含在一个相当通用的库中的东西,如果可用的话会更好用,所以我不会重新发明轮子。

用谷歌搜索它只是发现了很多关于 Python 的 os.path.join 的结果(这将是理想的,除非它是 Python,而不是 C),所以我是想知道是否有人知道更清洁/更标准的解决方案。

最佳答案

首先,您应该使用snprintf,而不是连接操作,一次构造一个字符串。这是安全有效的方法。串联在脚本语言中可能是惯用的,但在 C 中效率低下且有害(容易出现危险错误)。

话虽如此,自从 DOS 的第一个版本有了目录(2 或 3;我忘记是哪个了)以来,'/' 就作为 DOS 上的路径分隔符有效,并且它在 Windows 上也一直有效。它未被使用的唯一原因是许多在 DOS 支持目录之前设计的遗留命令行程序在其命令行解析中将 '/' 解释为“开关”(选项)字符。过去 20 年中唯一不支持 '/' 作为路径分隔符的真实系统是 pre-OSX MacOS,我认为这不再是一个可行的目标,所以在我看来,您应该始终使用 '/',并避免无故的“可移植性”污染您的代码。

关于c - 在 C 中连接路径的跨平台方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678432/

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