#include "stdafx.h"
void FindAll(char []);
void main()
{
FindAll("c:\\tasm\\*");
getch();
}
void FindAll(char dir [])
{
WIN32_FIND_DATA fd;
char dir1 [255];
memset((void*)dir1,0,sizeof(dir1));
HANDLE hf = FindFirstFile(dir,&fd);
if (hf!= INVALID_HANDLE_VALUE)
do{
if ((fd.cFileName==".") || (fd.cFileName=="..")) continue;// это почему то не работает
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIBUTE_DIRECTORY)
{ // если это каталог то удаляем * в конце и рекурсивно вызываем себя же
memcpy(dir1,dir,(sizeof(dir)-1));
strcat(dir1,fd.cFileName);
strcat(dir1,"\\*");
FindAll(fd.cFileName);
}
else cout<<"File is " <<fd.cFileName <<"\n";
}while (FindNextFile(hf,&fd));
FindClose(hf);
}
Найти все файлы на диске
Есть значит вот такой код
Так не будет работать - дело в том, что cFileName - указатель. То есть ты сравниваешь значение указателя cFileName и указателя, указывающего на ".";
Попробуй вместо этого
if (!strcmp(FindFileData.cFileName,"..") || !strcmp(FindFileData.cFileName,"."))