我的程序中有这个代码:
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
我尝试了很多东西,甚至用管理员权限运行。 什么都行不通。
答案 0 :(得分:0)
从您使用的强制转换中,看起来您的项目设置为Unicode(项目属性 - 配置属性\常规),在这种情况下,您的char
变量需要更改为宽字符{{ 1}}和wchar_t
,sprintf()
和strcmp()
函数需要更改为它们的Unicode等价物 - 始终要注意,当您需要时,您可能会做错使用演员阵容!
或者,您可以将项目更改为printf()
...