我正在尝试让FindFileFirst()windows API调用工作,并且每次尝试都会失败。我已经尝试了。,C:\ *。*, .txt,C:\ .txt但它甚至没有迭代目录名称。不知道该怎么办。当我调用GetLastError()时,我得到了ERROR_FILE_NOT_FOUND 2(0x2)。感谢您提供任何帮助。
HANDLE hFind;
LPWIN32_FIND_DATA FindFileData;
hFind = FindFirstFile("*.*", &FindFileData);
if(hFind == INVALID_HANDLE_VALUE)
{
printf("\nFindFirstFile failed (%u)\n",GetLastError());
return;
}
do
{
if(FindFileData->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData->cFileName[0] != '.')
continue;
else
searchDir(makePath(path, FindFileData->cFileName));
}
printf("Found %s %s\n",
FindFileData->dwFileAttributes,FindFileData->cFileName);
FindClose(hFind);
}
while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
答案 0 :(得分:2)
LPWIN32_FIND_DATA FindFileData;
您正在使用FindFileData指针而不为其分配内存。
使用这种方式..(“删除LP”)
WIN32_FIND_DATA FindFileData; //这将使用堆栈内存
然后引用FindFileData.dwFileAttributes等成员而不是FindFileData-> dwFileAttributes
答案 1 :(得分:0)
你应该确保双重斜杠路径
即。 “c:\\*.*
”
它应该可以正常工作。
答案 2 :(得分:0)
如前所述,你不能使用 尾随反斜杠() lpFileName输入字符串 FindFirstFile,因此可能不是 明显如何搜索root 的目录即可。如果你想看文件 或获取根的属性 目录,以下选项 适用:
要检查根目录中的文件,可以使用“C:*”和 通过使用逐步执行目录 FindNextFile。
要获取根目录的属性,请使用GetFileAttributes 功能
例如,您无法使用"C:\\*.txt"
搜索根目录中的文本文件
但在子目录中它会起作用。