我正在寻找一种可移植的方法来从 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/