PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verzeichnis rekursiv auslesen?


Gangstaslida
2005-04-27, 05:14:50
Hi
Ich versuche mir, einige Grundkenntnisse des rekursiven Programmierens anzueignen.
Mein Beispielcode sollte eigentlich alle Dateinamen (und Unterverzeichnisnamen), die in einem Verzeichnis und dessen Unterverzeichnise liegen, in eine Datei schreiben.
verzeichnislesen(verzeichnis)
{
system("cd verzeichnis");
cout >> system("ls") >> dateinamen.txt;
für jedes Unterverzeichnis
{
verzeichnislesen(unterverzeichnis);
}
}
Stimmt der Code prinzipiell so?

Sollte ich anstatt der for schleife besser eine while-Schleife einbauen, die den stdout von ls solange nach verzeichnissen durchsucht, bis alle durchgeackert sind?
Gibt es einen ähnlichen Codeschnippsel schon irgendwo im Netz?

Grestorn
2005-04-27, 08:07:28
Jo, ist prinzipiell korrekt so.

Allerdings macht man das nicht mit ls, und die Ausgabe durchzuackern wäre zu umständlich.

Da gibt's extra C-Routinen für. Such mal nach "findfirst", "findnext" und "findclose".

Einfachkrank
2005-04-27, 13:17:41
Gibt es zu den drei Funktionen C++ Alternativen?

MfG Einfachkrank

Coda
2005-04-27, 13:41:55
Es gibt AFAIK weder in der C noch inder C++ Standardbibliothek Funktionen dafür.

Grestorn
2005-04-27, 14:29:06
Es gibt AFAIK weder in der C noch inder C++ Standardbibliothek Funktionen dafür.
Sind die drei von mir genannten Funktionen nicht in der C (und damit auch C++) Standardbibliothek enthalten?

Ich verwende die MS C++ Bibliothek, und das sind sie als _find... enthalten.

Coda
2005-04-27, 17:33:00
Nein sind sie nicht.

Musste mir deshalb schon nen Wrapper bauen für nen Cross-Platform Program bei der Arbeit...
Unter Unix kann man sogar nur das ganze Verzeichnis auslesen und dann schauen ob die Dateien in die Auswahl fallen.