列出不在C中工作的Windows目录中的文件

时间:2014-10-05 06:42:25

标签: c windows list dir

我的程序中有这个代码:

char * choosePic(const char * dir)
{
    WIN32_FIND_DATA fdFile;
    HANDLE hFind = null;
    char sPath[2048];

    sprintf(sPath, "%s\\*.*", dir);

    if ((hFind = FindFirstFile((LPCWSTR) sPath, &fdFile)) == INVALID_HANDLE_VALUE)
    {
        if (GetLastError() == ERROR_FILE_NOT_FOUND)
        {
            printf("File not found");
        }
        else
        {
            printf("Error with path")
        }

        FindClose(hFind);
        return NULL;
    }

    do
    {
        if (strcmp((char *) fdFile.cFileName, "*.*") != 0 && strcmp((char *) fdFile.cFileName, ".." != 0)
        {
            printf("%s %s", sPath, dir);
        }
    } while (FindNextFile(hFind, &fdFile));

    FindClose(hFind);
}

我给这个函数一个路径choosePic("C:\\Windows"),我只得到:

> Error with path

我尝试了很多东西,甚至用管理员权限运行。 什么都行不通。

1 个答案:

答案 0 :(得分:0)

从您使用的强制转换中,看起来您的项目设置为Unicode(项目属性 - 配置属性\常规),在这种情况下,您的char变量需要更改为宽字符{{ 1}}和wchar_tsprintf()strcmp()函数需要更改为它们的Unicode等价物 - 始终要注意,当您需要时,您可能会做错使用演员阵容!

或者,您可以将项目更改为printf() ...