gpt4 book ai didi

检查 C 中是否存在具有部分名称的文件

转载 作者:行者123 更新时间:2023-11-30 19:04:57 25 4
gpt4 key购买 nike

我知道文件的目录,但我只有部分文件名。如何检查C中是否存在该文件

例如:

/tmp/God_of_War

文件名实际上叫做:

/tmp/God_of_War_PSP(USA).rar

最佳答案

这在可移植 C 中是不可能的,因为 C 标准库没有用于枚举目录中文件(然后自己匹配它们)的 API,更不用说用于通过模式匹配文件名的 API。这是因为 C 早于现代的分层目录概念(甚至是 1984 年的原始 Macintosh didn't support subdirectories ) - 而且因为 C 今天仍然支持这些系统(想想:微 Controller )。

实际上,您可以使用平台的文件系统 API:在类 Unix/POSX 系统(包括使用 dirent.h 完成的 Linux)上 - 对于您的问题,您可以使用 glob 函数:http://pubs.opengroup.org/onlinepubs/009604499/basedefs/glob.h.html

glob_t result;
const int ok = glob( "/tmp/God_of_War*", /*flags:*/ 0, /*errfunc:*/ NULL, &result );
if( 0 == ok ) {
for( size_t i = 0; i < result.gl_pathc; i++ ) {
puts( result.gl_pathv[i] );
}
}
else {
// error
}
globfree( &result);

在 Windows 上,这是 FindFirstFileFindNextFile,您可以使用通配符,就像 glob 一样。

WIN32_FIND_DATA result;
HANDLE searchHandle = FindFirstFile( "God_of_War*", &result);
if( searchHandle == INVALID_HANDLE_VALUE ) {
// handle error, use GetLastError() for details
}
else {
do {
puts( searchHandle.cFileName );
}
while( FindNextFile( searchHandle, &searchHandle ) );
DWORD lastError = GetLastError();
if( lastError != ERROR_NO_MORE_FILES ) {
// handle error
}
}

关于检查 C 中是否存在具有部分名称的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com