Rekursion



  • Ich versuche eine Funktion zu Programmieren, die mittels Rekursion ein Verzeichnis nach Unterverzeichnissen durchsucht und diese wieder usw. Doch bis jetzt habe ich das Problem, dass wenn in einem Unterverzeichnis wieder ein Unterverzeichnis auftritt, dass mir das als erstes gespeicherte Unterverzeichnis überschrieben wird. Hat jemand einen funktionierenden Quellcode rumliegen, mit dem er mir helfen kann?
    Gruß, Kathrin.



  • poste doch mal dein code ... wahrscheinlich nur ein kleiner vehler ... ist doch schön wenn du den weiterverwenden kanns 🙂



  • welches OS?

    Standard C beinhaltet keine routinen zum lesen von Ordnern.



  • aber sie hat doch wie es scheint kein problem mit den ordnern selbst sondern mit dem algorithmus???



  • Original erstellt von japro:
    aber sie hat doch wie es scheint kein problem mit den ordnern selbst sondern mit dem algorithmus???

    schön und gut, aber WIE willst du einen algorithmus schreiben ohne zu wissen WAS du machen sollst?



  • oh sorry hab da was falsch verstanden... nehme alles zurück 🙂



  • Original erstellt von Shade Of Mine:
    schön und gut, aber WIE willst du einen algorithmus schreiben ohne zu wissen WAS du machen sollst?

    Du schreibst da einfach Pseudocode rein.

    int leseVerz(char *startVerz) {
      int i;
      for(i=0; i<ANZAHL_VERZEICHNISEINTRÄGE; i++) {
        if (VERZEICHNISEINTRAG(i) == UNTERVERZEICHNIS) {
          printf(UNTERVERZEICHNIS.NAME);
          leseVerz(UNTERVERZEICHNIS.KOMPLETTER_PFAD);
        }
      }
    }
    

    [ Dieser Beitrag wurde am 03.05.2003 um 15:47 Uhr von DrZoidberg editiert. ]



  • ich glaube mit deinem code kommt man nur dann weiter wenn es immer nur EIN Unterverzeichniss gibt.... Ohne Verkettung kommt man so nicht weiter.



  • Der Code funktioniert auch mit mehreren Unterverzeichnissen.
    Dafür ist ja diese Schleife da:
    for(i=0; i<ANZAHL_VERZEICHNISEINTRÄGE; i++) {
    ...
    }



  • nein.... das kann so nicht funzen. Überlege es noch mal....



  • Man könnte den jeweils aktuellen Verzeichnisnamen in einer lokalen Funktionsvariable speichern, beim nächsten Selbstaufruf der Funktion wird auf dem Stack ne neue lokale Variable angelegt, während die alte gespeichert bleibt.
    Oder sowas:

    void dieFunktion(const char *pfad) {
       char neuerPfad[MAX_PATH];
    
       while (noch Unterverzeichnisse abzulaufen) {
          neuerPfad = ....; // hier den zu untersuchenden Pfad bilden
          dieFunktion(neuerPfad);
       }
    }
    

    Sollte eigentlich problemlos klappen.

    [ Dieser Beitrag wurde am 10.05.2003 um 13:01 Uhr von TriPhoenix editiert. ]


Anmelden zum Antworten