001
09.06.2004, 20:22 Uhr
tim
|
Hallo!
Läßt sich bestimmt noch etwas eleganter lösen, sollte aber prinzipiell funktionieren:
C++: |
#include <windows.h> #include <stdio.h>
char g_path[MAX_PATH+1];
void find() { char* path_end = g_path + strlen( g_path );
path_end[0] = '\\'; path_end[1] = '*'; path_end[2] = '\0'; WIN32_FIND_DATA data; HANDLE hFindFile = FindFirstFile( g_path, &data );
++path_end; *path_end = '\0';
if( hFindFile != INVALID_HANDLE_VALUE ) { do { if( ( 0 != strcmp( data.cFileName, "." ) ) && ( 0 != strcmp( data.cFileName, ".." ) ) ) { strcat( path_end, data.cFileName );
printf( "%s\n", g_path );
if( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) find();
*path_end = '\0'; } } while( FindNextFile( hFindFile, &data ) ); } }
int main( int argc, char* argv ) { sprintf( g_path, "C:" );
find();
return 0; }
|
Idee ist einfach nur find() rekursiv aufzurufen, falls ein Verzeichnis gefunden wird (das weder "." noch ".." heißt). |