Universelle Möglichkeit Verzeichnisse auszulesen gesucht (Win32)
-
Hallo Leute,
ich will den Inhalt eines Verzeichnisses auslesen (also eine Liste der Dateien bekommen). Gibt es dafür einen universellen Weg, der unabhängig vom Kompiler ist?
Wenn man googlt, dann findet man oft
#include <sys/types.h> #include <dirent.h> #include <stdio.h> int main(int argc, char **argv) { int run = 1; char buffer[100]; DIR *dirHandle; struct dirent * dirEntry; dirHandle = opendir("."); if (dirHandle) { while (0 != (dirEntry = readdir(dirHandle))) { printf("%d) %s\n", run, dirEntry->d_name); run ++; } closedir(dirHandle); } }was sich jedoch nicht mit dem Visual Studio kompilieren lässt. Anders herum möchte ich keinen Code verwenden, der dann nur vom VS kompiliert werden kann.
Hat jemand eine Idee?
Achja: Bitte kein system("dir")... Danke!
Grüße!
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C 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.
-
Hallo bw1faeh0 ,
das mit dem Compiler unabhängig ist schonmal sone Sache.
Die includes die du Verwendest sind nicht alle aus der Standartlibrary, wenn ich mich nicht täusche.
Um einen Code zuschreiben den du auf 'allen' Compilern compilieren kannst, solltest du nur die Standartlibraries verwenden. Manche Compiler, gerade die Visual Sachen bringen Biblotheken mit die nicht im ANSI C enthalten sind. Mit diesen Bibos bist du einfach mal Compilerabhängig.Auf der anderen Seite ist es aber so, dass es mit diesen Biblotheken natürlich sehr gefordert bist. DU wirst wohl sehr viel Kreativität walten lassen müssen um damit auf eine Ordnerstruktur zugreifen zu können.
Vlt. solltest du dich vorher informieren, wie diese Ordnerstrukturen im Speicher aufgebaut bist, und ob du nicht irgendwie auf binärer Ebene darauf zugreifen kannst.Ein andere Problemchen ist natürlich die Protierbarkeit, Linux hat ein anderes Filesystem als Windoof.
Also ich empfehle dir bei einem COmpiler zu bleiben und herauszufinden, welche Biblotheken dieser mit sich bringt, die dich unterstützen können.
mfg martin
-
Du brauchst die WinAPI - Header und Libraries. Die gibt es passend zum MS, Borland und MinGW - Compiler. Vermutlich auch zu anderen Compilern, die auf Windows arbeiten.
Dort helfen Dir die Funktionen FindFirstFile, FindNextFile und FindClose.
-
boost::filesystem
-
Deine Version oben ist Compiler unabhängig. Nur ist sie für POSIX-Systeme, wie z.B. Linux. Wenn du unter Windows programmierst, musst du entweder die WinAPI verwenden, oder du nimmst eine plattformunabhängige Bibliothek.
-
Naja, habe mich nun letzt endlich für die Lösung entschieden, die mir MS mit FindFirstFile, FindNextFile, etc bietet...