C - 给定一个不区分大小写的文件路径,如何检查文件是否存在?

C - given a case-insensitive file path, how to check whether the file exists or not?

例如,假设我们有一个名为 "Hello.txt" 的文件,然后检查 "hello.txt" 或 "heLLo.txt" 是否存在 return true。

如果您是 运行 Windows 或任何不区分大小写的文件系统,那么除了检查一个大小写外别无他法。如果 "Hello.txt" 存在,则 "hEllo.txt" 存在(并且是同一个文件)(这里的难题是当你想确保文件在文件系统中用给定的大小写拼写时)

如果您 运行 是一个区分大小写的文件系统,只需获取当前文件的目录名称,列出文件内容,并将条目与当前文件名进行比较,忽略大小写。

看看 fcaseopen,它演示了如何处理不区分大小写的文件操作。

本质上,要使用的 C headers/functions 是:

  • dirent.h,使用 opendir/readdir/closedir 遍历目录中的文件
  • string.h开始,使用strcasecmp比较两个文件名,忽略字符大小写