我正在寻找一种从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”
是否有通用的解决方案? (我在这里和Google都找不到)
答案 0 :(得分:1)
C标准中没有任何东西可以指定这样的功能,也不需要实现来提供。
此外,如果不专门针对目标环境进行定制,就无法自己实现。证明:
abc\def.txt
的文件名部分为def.txt
。abc\def.txt
的文件名部分为abc\def.txt
。由于相同输入的正确结果在不同系统上是不同的,所以独立于目标环境的文件名语法的函数无法实现此目的。
因此,必须为一个或多个特定实现编写任何此类函数,或者必须考虑并使其适应于为其编译的环境。
我不知道有提供这种功能的软件,但这并不是说没有这种软件。