FindFirstFile始终返回无效句柄

时间:2015-09-04 19:32:36

标签: c++ windows

我的目标是列出特定目录中的文本文件,并让用户加载其中一个文件。

我使用Windows,Unicode是在我的编译器中预定义的。

问题:FileHandle始终为INVALID_HANDLE_VALUE。造成这种情况的原因是什么?如何纠正?

我的上一段代码如下:

ListAllTxtFiles(L"C:\\Users\\Tnc\Desktop\\Yazılım Çalışmaları\\Projects\\Oyun Projem\\data\\SaveFiles\\");

void ListAllTxtFiles(const wchar_t *Directory)
{
    TCHAR Buffer[2048];
    wsprintf(Buffer, L"s%*.txt", Directory);//there are security considerations about this function

    WIN32_FIND_DATAW FindData;
    HANDLE FileHandle = FindFirstFileW(Buffer, &FindData);

    if (FileHandle == INVALID_HANDLE_VALUE)
    {
        printf("Could not find any files..\n");
    }
    else
    {
        do 
        {
            printf("Found %s\\%s\n", Directory, FindData.cFileName);

        } while (FindNextFile(FileHandle, &FindData));
        CloseHandle(FileHandle);
    }
}

1 个答案:

答案 0 :(得分:1)

wsprintf(Buffer, L"s%*.txt", Directory);

应该是

wsprintf(Buffer, L"%s*.txt", Directory);

你的wsprintf格式字符串错误。