Verzeichnis/Ordner auslesen



  • hallo,

    gibt es eine Möglichkeit alle Dateien in einem Ordner (WinXP) auszulesen?

    Ideal wäre ein anschließendes Speichern in einem Array...

    Bin da gerade schon etwas länger dran und hab nichts passendes gefunden.

    evtl hat ja jmd ein Stichwort oder ein Stück Code ...

    danke
    arz



  • Die Frage wäre besser im WinAPI-Forum aufgehoben, aber egal. Die Funktionen, nach denen du suchst, heißen FindFirstFile, FindNextFile und FindClose. Das sieht dann etwa so aus:

    WIN32_FIND_DATA wfd;
    HANDLE h;
    
    h = FindFirstFile("C:\\verzeichnis", &wfd);
    
    if(h != INVALID_HANDLE_VALUE) {
      do {
        // wfd enthält hier Informationen über die Datei
      } while(FindNextFile(h, &wfd));
    
      FindClose(h);
    }
    

    WIN32_FIND_DATA ist eine Struktur, sie ist hier beschrieben. Links zur Dokumentation der genannten Funktionen befinden sich weiter unten auf der selben Seite.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • ich habe es jetzt mal so probiert:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
    HANDLE fHandle;
    WIN32_FIND_DATA wfd;
    
    int i=0;
    
    char Dateien[10][18]; 
    
    fHandle=FindFirstFile("d:\\Eigene Dateien\\CTests\\03\\*",&wfd);
    
    do
    {
    
    //
    //hier würde ich gerne jede datei in ein char Feld einlesen:
    Dateien[i]=wfd.cFileName[i];
    
    printf("Datei: %s\n",wfd.cFileName);
    
    i++;
    }
    while (FindNextFile(fHandle,&wfd));
    FindClose(fHandle);
    
    printf("\n");
    
    system("PAUSE");
    return 0;
    }
    

    irgendwie klappt das aber nicht so wie ich mir dachte,, auslesen und anzeigen funktioniert,, in das char Array schreiben funktioniert nicht.

    danke!



  • ok,,

    so:

    sscanf(wfd.cFileName, "%s", &Dateien[i]);
    

    klappts ... (kopf auf den tisch hau)



  • FAQs lesen lohnt sich...

    arz schrieb:

    char Dateien[10][18];
    

    Somit legst du schon im Vorfeld fest, dass es in deinem Verzeichnis nur 10 Dateien gibt, deren Namen nicht länger als 18 Zeichen sind. Sollte das jedoch nicht zutreffen, hast run-time error durch Pufferüberlauf (ist nicht gut). Verwende doch lieber Vektoren oder Ähnliches:
    vector <string>Dateien;


Anmelden zum Antworten