【发布时间】:2014-02-08 14:32:25
【问题描述】:
我使用这样的代码来枚举子目录着色器中的所有着色器文件:
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
shader_counter = 1;
pclog("searching shader files \n");
hFind = FindFirstFile("shaders\\*.fx", &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
pclog("no shader files found \n");
}
else
{
pclog("shader files found \n");
while(hFind!=INVALID_HANDLE_VALUE)
{
pclog("Filename=%s\n",FindFileData.cFileName);
hFind = FindNextFile(hFind, &FindFileData);
shader_counter++;
}
pclog("Exit loop\n");
FindClose(hFind);
hFind = INVALID_HANDLE_VALUE;
}
但它只输出许多文件中的 3 个并崩溃。我做错了什么?
编辑,这是使用通配符枚举子目录的正确代码,也许有人会觉得它有用:
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
BOOL found = TRUE;
hFind = FindFirstFile("shaders\\*.fx", &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{ // directory/wildcard not found
}
else
{
while(found)
{
//printf("Filename=%s\n",FindFileData.cFileName);
found = FindNextFile(hFind, &FindFileData);
}
FindClose(hFind);
hFind = INVALID_HANDLE_VALUE;
}
【问题讨论】:
-
请先使用调试器查找崩溃的确切位置。
标签: c file directory enumerate