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.