c - 用于从路径中提取文件名的可移植纯 C 函数

标签 c filesystems portability ansi

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

相关文章:

C - 仅使用 3 个字节将整数写入二进制文件

c - 在 C 中获取文件系统创建日期

python - Python 中是否有允许在单个文件中管理虚拟文件系统的库?

c++ - 独立于共享库的 linux 二进制文件

python - 可移植应用程序 : s3 and Google cloud storage

c - C 中的签名除法

c - 返回局部变量的引用

c - 为具有相同主体的结构赋予不同的名称

c - 结构体中文件路径字段的长度

linux - Linux Mint 上神秘的 find 命令占用内存