Показать сообщение отдельно

  #1707  
Старый 05.10.2008, 14:31
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

Вот пример поиска, тока я не помню где я его нашел:
Код:
void FindDir(char *path,char *mask, char file[]) 
{   
    WIN32_FIND_DATA wfd;    
    HANDLE hfound;  
    char newpath[MAX_PATH]; 
    char fpath[MAX_PATH];   
    char pathifile[MAX_PATH]; //полный путь до файла
    char delpath[MAX_PATH];

    strcpy(fpath,path); 
    strcat(fpath,"\\"); 
    strcpy(delpath,fpath);  
    strcat(fpath,mask); 
 
 
    if((hfound=FindFirstFile(fpath,&wfd))!=INVALID_HANDLE_VALUE)    
        {
        if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))   
            {
            //нашли первый файл в папке path    
            //  
			printf("Error: %d\n", GetLastError());
            }
        while(FindNextFile(hfound,&wfd))    
            {   
            if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))   
                {
                // файл в папке path    
                // delpath - папка, с которой начинается реккурсия
                // wfd.cFileName - имя найденного файла
 
                // копируем строку delpath в pathifile
                strcpy(pathifile, delpath);
                // прибавляем к строке pathifile значение
                // переменной wfd.cFileName - имя файла
                strcat(pathifile, wfd.cFileName);    
				if (strstr(pathifile, file) != NULL)
				{
				//	send(sd, pathifile, strlen(pathifile), 0);
					strcat(tmp, pathifile);
					strcat(tmp, "\n");
				}
                // делаем что-либо с найденным файлом         
 
                }
            }
        }
        
    FindClose(hfound);  
    //поиск файлов закончили, теперь ищем подпапки  
    strcpy(fpath,path); 
    strcat(fpath,"\\*.*");  
    
    if((hfound=FindFirstFile(fpath,&wfd))!=INVALID_HANDLE_VALUE)    
        {
        if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))    
            {
            strcpy(newpath,path);   
            strcat(newpath,"\\");   
            strcat(newpath,wfd.cFileName);  
            FindDir(newpath,mask, file, sd); //Рекурсивный вызов  
            }
        
        while(FindNextFile(hfound,&wfd))    
            {
            if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))    
                {
                strcpy(newpath,path);   
                strcat(newpath,"\\");   
                strcat(newpath,wfd.cFileName);  
                FindDir(newpath,mask, file, sd); //Рекурсивный вызов  
                }
            }
        }
    }
(c) чье_то_но_не_мое
 
Ответить с цитированием