我试图让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);

最佳答案

LPWIN32_FIND_DATA FindFileData;

您正在使用FindFileData指针,而没有为其分配内存。

使用这种方式..(“删除LP”)

WIN32_FIND_DATA FindFileData; //这将使用堆栈内存

然后引用类似于FindFileData.dwFileAttributes的成员,而不是使用FindFileData-> dwFileAttributes

10-04 19:48