void PrintDir(char *parm)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char buffer[MAX_PATH];
char path[MAX_PATH];
strcpy(path, parm);
strcat(path, "*.*");
hFind = FindFirstFile(path, &FindFileData);
do
{
//Интересный момент - может я и дурак но он находит еще папку "."
//это сама папка parm,
//и ".." это родительская папка, если убрать условие то рекурсия зациклится
if (!strcmp(FindFileData.cFileName, ".") || !strcmp(FindFileData.cFileName, ".."))
continue;
//тут в условии именно & а не == потому как FILE_ATTRIBUTE_DIRECTORY это флаг
if (FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(buffer, parm);
strcat(buffer, FindFileData.cFileName);
printf("%s\n", buffer);
strcat(buffer, "\\");
PrintDir(buffer);
}
else
{
strcpy(buffer, parm);
strcat(buffer, FindFileData.cFileName);
printf("%s\n", buffer);
}
}while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
З.Ы. может можно лучше и проще...
Непонятка с FILE_ATTRIBUTE_DIRECTORY
Все это под 2000.
В чем-же глюк? Если кто знает более лучший способ поиска, то напишите.
[email]Matush2002@Mail.ru[/email]
FILE_ATTRIBUTE_DIRECTORY - это не значене всей переменной а только флаг, правильно так