2009-05-19 12 views
3

ich diese Art von Code verwendet habe in meinem Dev-cpp vor:Microsoft Visual Studio: opendir() und readdir(), wie?

if((dh = opendir(folder)) !== false){ 
    while((file = readdir(dh)) !== false){ 
     // do my stuff 
    } 
    closedir(dh); 
} 

Aber jetzt bin ich mit MSVC++ und ich weiß nicht, wie diese Dateien dort zu schreiben, habe ich versucht, dirent.h/dir zu kopieren .h/errno.h da drin, aber es gibt einen anderen Fehler in Bezug auf andere eingeschlossene Dateien in diesen Dateien ..., und indem ich in die Dateien schaue, sehe ich Mingw-Sachen dort, so dass ihr Compiler verwandt ist? idk welchen Compiler MSVC++ benutzt, aber ist es möglich, diese Dateien in MSVC++ zu kopieren und es zum Laufen zu bringen?

Ich habe versucht, einen Code von MSDN zu sehen, aber es war wirklich vermasselt, so im i über diese Funktionen verwenden Hoffnung, könnte ...

+0

Ist das nicht PHP-Code? Dieser Vergleichsoperator ist in C nicht verfügbar. – OregonGhost

+0

lol yeah, das habe ich auch bemerkt, aber die C-Version ist immer noch die gleiche ... –

Antwort

1

Die Antwort auf diese Frage eine Menge auf der Zielplattform ab, die Sie‘ re kompilieren für.

MSVC++ ist ein Compiler, also werde ich vermuten, dass Sie versuchen, ähnliche Aktionen wie opendir() und readdir() auf einer Windows-Plattform auszuführen. In diesem Fall haben einen Blick auf die folgenden Ressourcen:

Die zweite Verbindung ist eine Seite von MSDN, die alle Funktionen auf der Windows-Plattform-API auflistet interagieren mit dem Dateisystem. Sie werden feststellen, dass die meisten Operationen mit Dateien in Windows mit einem Aufruf der CreateFile-Funktion beginnen.

2

Großartig, es war nicht so schwer, schließlich musste ich verwenden do-while-Schleife aber:

HANDLE hFind; 
WIN32_FIND_DATA FindFileData; 

if((hFind = FindFirstFile("C:/some/folder/*.txt", &FindFileData)) != INVALID_HANDLE_VALUE){ 
    do{ 
     printf("%s\n", FindFileData.cFileName); 
    }while(FindNextFile(hFind, &FindFileData)); 
    FindClose(hFind); 
} 

Das ist wirklich besser, weil ich verwenden kann „* .txt“ usw., macht es viel mehr einfacher einige spezifische Dateitypen zu finden, die früher i für das eigene Spiel-Funktion schreiben musste: D

7

Wenn Sie eine schnelle Drop-in-Ersatz benötigen, können Sie auch:

http://www.two-sdg.demon.co.uk/curbralan/code/dirent/dirent.html

Einfache Klasse, die die POSIX-API für Win32 verwendet

+2

Dies ist KEIN Drop-In-Ersatz für POSIX dirent. Die DIR-Struktur fehlt nicht nur d_type, sondern der Header enthält eine ganze Reihe von Definitionen. Es ist ein guter Ausgangspunkt, aber es ist nicht verwendbar für alles, das zwischen einer Datei und einem Verzeichnis unterscheiden möchte! – nevelis

+0

dieser scheint besser zu sein: https://svn.apache.org/repos/asf/avro/trunk/lang/c/tests/msdirent.h –

+0

@nevelis POSIX spezifiziert nicht das 'd_type'-Mitglied, das ist a gemeinsame Erweiterung, aber nicht Teil von POSIX. –

Verwandte Themen