Wyszukiwanie wszystkich folderow wraz z podfolderami

0

Czesc
mam problem z moim programem korzystajacym z biblioteki Windows (windows.h). Program ma przeszukiwac zadana lokalizacje wraz z wszystkimi podfolderami i wypisywac nazwy tychze folderow. Musi byc on napisany pod Windowsa z uzyciem funkcji FindFirstFile i FindNextFile.

Oto moj wadliwy kod:

 
#include <iostream>
#include <windows.h>

char dysk[ MAX_PATH ] = { 0 };


using namespace std;



int znajdz( char * pDirectory )
{
    char szFindPath[ MAX_PATH ] = { 0 };
    char sciezka[ MAX_PATH ] = { 0 };
    strcpy( szFindPath, pDirectory );
    strcat( szFindPath, "*.*" );
    WIN32_FIND_DATA file;
    HANDLE search_handle = FindFirstFile( szFindPath, & file );
    
    if( search_handle )
    {
        do
        {
            if( file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
            {
                strcpy( sciezka, "" );
                strncat( sciezka, szFindPath, strlen( szFindPath ) - 3 ); //-3 bo w adresie jest D:\\cos_tam\\*.* <- kasowanie *
                strcat( sciezka, file.cFileName );
                strcat( sciezka, "\\" );
                znajdz( sciezka );
                std::cout << file.cFileName << std::endl;
            }
            
        } while( FindNextFile( search_handle, & file ) );
        
        CloseHandle( search_handle );
        
    }
}

int main()
{
    strcpy( dysk, "D:\\" );
    znajdz( "D:\\" );
    
    return 0;
}

Chcialem zeby funkcja dzialala rekurencyjnie, przechodzac przez wszystkie podkatalogi katalogu itd i wypisywala jeden raz ich nazwy ale niestety wypisuje te same nazwy caly czas, nie rozumiem dlaczego.

0

Ma ktoś jakas propozycje albo pomysl ? :)

0
            if((file.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)&&(strcmp(file.cFileName,"."))&&(strcmp(file.cFileName,"..")))
            {
                znajdz(strcat(strcat(strcpy(sciezka,pDirectory),file.cFileName),"\\"));
                std::cout<<file.cFileName<<std::endl;
            }
0

pisać programy tylko pod windows jest mainstreamowe: http://www.johnloomis.org/ece537/notes/Files/Examples/printdir.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1