用于从路径中提取文件名的便携式普通C函数

问题描述 投票:1回答:1

我正在寻找一种可移植的方法从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 filesystems portability ansi
1个回答
1
投票

C标准中没有任何内容指定这样的功能或者需要实现来提供一个功能。

此外,如果不专门针对目标环境进行定制,则无法自行实现。证明:

  • 在Windows系统上,abc\def.txt的文件名部分是def.txt
  • 在macOS系统上,abc\def.txt的文件名部分是abc\def.txt

由于相同输入的正确结果在不同系统上是不同的,因此独立于目标环境的文件名语法的功能无法实现此功能。

因此,任何此类函数都必须为特定实现或实现编写,或者必须考虑并适应其编译环境。

我不知道有任何软件提供这样的功能,这并不是说没有这样的功能存在。

© www.soinside.com 2019 - 2024. All rights reserved.