我正在寻找一种可移植的方法从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标准中没有任何内容指定这样的功能或者需要实现来提供一个功能。
此外,如果不专门针对目标环境进行定制,则无法自行实现。证明:
abc\def.txt
的文件名部分是def.txt
。abc\def.txt
的文件名部分是abc\def.txt
。由于相同输入的正确结果在不同系统上是不同的,因此独立于目标环境的文件名语法的功能无法实现此功能。
因此,任何此类函数都必须为特定实现或实现编写,或者必须考虑并适应其编译环境。
我不知道有任何软件提供这样的功能,这并不是说没有这样的功能存在。