Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » File Struktur ausgeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.06.2004, 16:04 Uhr
~Boarderadi
Gast


Hallo Leute

Kann mir jemand weiterhelfen? Ich versuche die ganze File Struktur unter c:// auszugeben. Soweit bin ich schonmal gekommen:


Code:
#include "stdafx.h"
#include <windows.h>

int main()
{

    WIN32_FIND_DATA dir;
    HANDLE fhandle;

    char directory[256];
    
    sprintf(directory,"%s\\*.*","c:\\");

        if((fhandle = FindFirstFile(directory,&dir))!=INVALID_HANDLE_VALUE){
            do{
                printf("%s\n",dir.cFileName);
            }while(FindNextFile(fhandle,&dir));
            FindClose(fhandle);
        }
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: