我正在寻找一种从ANSI C的路径字符串中提取文件名的可移植方法。
路径如下:

C:\tmp\abc.txt

C:/tmp/abc.txt

c:/tmp\abc.txt

../abc.txt

c:tmp/abc.txt

c:abc.txt

abc.txt

./abc.txt

/home/user/abc.txt

/home/.././var/tmp/abc.txt

对于每种情况,我都想提取“abc.txt”
有通用的解决方案吗?(我在这里和谷歌都找不到)

最佳答案

在C标准中,没有任何东西指定这样的函数,也没有任何东西需要实现来提供这样的函数。
此外,如果不针对目标环境进行专门的裁剪,就不可能自己实现。证明:
在Windows系统中,abc\def.txt的文件名部分是def.txt
在macOS系统上,abc\def.txt的文件名部分是abc\def.txt
由于不同系统上相同输入的正确结果不同,因此独立于目标环境的文件名语法的函数无法实现此功能。
因此,任何这样的函数都必须为一个或多个特定的实现而编写,或者必须考虑并适应它所编译的环境。
我不知道提供这种功能的任何软件,这并不是说没有这样的软件存在。

关于c - 可移植的普通C函数,用于从路径中提取文件名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55751061/

10-11 22:57
查看更多