Arrays in C



  • Hallo zusammen,

    ich versuche mich gerade daran mit Arrays zu arbeiten.
    Ich habe folgendes Problem:

    Ich würde gerne den Inhalt eines Folders nach einer bestimmten Dateiendung durchsuchen und die jeweilige gefundenen Dateien in ein Array schreiben, um die Namen dann weier zu benutzen... Hab leider keine ahnung, wie ich das bewerkstelligen soll?!?

    Kann mir bitte jemand da mal die Richtung geben?



  • hallo,
    überlege dir für welches betriebssystem du das programmieren möchtest und dann suchst du dir die zugehörigen bibliotheken und funktionen.



  • falls du dir tipparbeit sparen willst, kannst du auch erstmal
    dein os für dich arbeiten lassen. z.b.:

    system ("dir /B /S C:\\AnyValidFolder\\*.exe>list.txt");
    

    diese zeile würde z.b. alle dateinamen mit der endung *.exe in eine textdatei namens list.txt kopieren.
    der parameter /S bewirkt, das alle unterverzeichnisse durchsucht werden,
    durch den parameter /B werden nur die dateinamen ausgegeben.

    die dateinamen aus der list.txt könntest du dann in ein array einlesen etc...



  • Ahhh... schon mal ein guter Ansatz.
    Den Inhalt einer Datei in ein Array zu schreiben, das krieg ich hin, nur mit dem Auslesen der Namen selber komme ich nicht zu Potte.

    Mit FindFirstFile() usw wollte ich vermeiden.

    Das Ganze soll für WinCE5 sein.



  • mit wince kenne ich mich nicht aus, keine ahnung ob da auch die dir-funktion zur verfügung steht.



  • 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.


  • Mod

    FindFirstFile und FindNextFile laufen auch unter CE.



  • Statt mit FindFirstFile etc. zu arbeiten, spawnst du lieber eine Shell, um den Kram in eine Datei zu schreiben und daraus wieder einzulesen? Das scheint mir nicht besonders vernünftig.

    Der komplexere Teil dieser Angelegenheit scheint mir die Speicherverwaltung für das Zielarray zu sein (sofern du dich nicht auf künstliche Beschränkungen einlassen willst), und den wirst du mit der Dateikiste auch nicht los. FindFirstFile etc. sind ziemlich simpel:

    HANDLE h;
    WIN32_FIND_DATA wfd;
    
    h = FindFirstFile("*.exe", &wfd);
    
    if(h != INVALID_HANDLE_VALUE) {
      do {
        // Der Dateiname ist hier als wfd.cFileName verfügbar.
      } while(FindNextFile(h, &wfd);
    
      FindClose(h);
    }
    

    Dann musst du dir halt nur noch in der Schleife eine Kopie des Dateinamens ziehen (Windows hat eine Funktion _strdup dafür) und ein ausreichend langes Zeiger-Array vorhalten (realloc ist dein Freund). Der aufwändige Teil ist eine vernünftige Fehlerbehandlung für den Fall, dass realloc oder _strdup mit NULL zurückkommen.



  • Vielen Dank für die Antworten! 👍
    Dann werde ich das wohl doch mit FindFirstFile und FindNextFile machen.

    Ich dachte halt, dass es da evtl. eine andere, sinnvolle Lösung für gibt.
    Aber gut... dann mach ich das so.

    Gruß


Anmelden zum Antworten