Listing 5 Using the FindFile API to list directories
void list_sub_directories(char const *dir)
{
WIN32_FIND_DATA findData;
TCHAR szFind[_MAX_PATH];
HANDLE hFind;
lstrcpy(szFind, dir);
lstrcat(szFind, "\\*.*");
hFind = FindFirstFile(szFind, &findData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
if( lstrcmpi(findData.cFileName, ".") == 0 ||
lstrcmpi(findData.cFileName, "..") == 0)
{
// Ignore dots
}
else if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// Show subdirectories
printf( "%s\n", findData.cFileName);
}
} while(FindNextFile(hFind, &findData));
FindClose(hFind);
}
}
int main(int argc, char **argv)
{
char szDir[_MAX_PATH];
GetCurrentDirectory(_MAX_PATH, szDir);
list_sub_directories(szDir);
return 0;
}