Hallo ich möchte von einem Verzeichnis die Dateinamen in einlesen. bild1.bmp bild2.bmp bild3.bmp bild4.bmp bild5.bmp bild6.bmp Wie kann man dies in Ansi-C realisieren?
Garnicht; die Dateisystemschnittstelle ist nicht Bestandteil von ANSI-C. Schau nach POSIX, dort ist die Schnittstelle zu unixoiden Betriebssystemen beschrieben.
1 | struct dirent Entry; |
2 | struct dirent* Result; |
3 | |
4 | while( !readdir_r( directory, &Entry, &Result) && Result) |
5 | {
|
6 | if( !sString::Compare( ".", Entry.d_name) || !sString::Compare( "..", Entry.d_name)) |
7 | {
|
8 | continue; |
9 | }
|
10 | |
11 | fprintf( stout, "Found: %s\n", Entry.d_name); |
12 | }
|
So in der Art, sString::Compare musst du dir halt durch strcmp ersetzen.
Ja, das wäre die POSIX-Variante. Es gäbe auch noch ftw(), auf GNU gibts auch noch scandir(), welches ganz nützlich ist.
Und unter Windows gibt es die Win32-API-Funktionen FindFirstFile & FindNextFile, mit denen dasselbe erreicht werden kann.
Sven P. schrieb:
> Ja, das wäre die POSIX-Variante.
Jop, wollte dir nicht widersprechen :-)
Rufus t. Firefly schrieb: > Und unter Windows gibt es die Win32-API-Funktionen FindFirstFile & > FindNextFile, mit denen dasselbe erreicht werden kann. Die koennen sogar noch das unter Windows uebliche Filtern "*.bmp", was die ulkigen Namen erklaert.
Wobei es bei MS auch noch die RTL-Version gibt. Dann heißen die: _findfirst/_findnext/_findclose
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.