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
比较两个文件名,忽略字符大小写
例如,假设我们有一个名为 "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
比较两个文件名,忽略字符大小写