Forum: PC-Programmierung Ansi-C Dateinamen einlesen


von Anfänger (Gast)


Lesenswert?

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?

von Sven P. (Gast)


Lesenswert?

Garnicht; die Dateisystemschnittstelle ist nicht Bestandteil von ANSI-C.

Schau nach POSIX, dort ist die Schnittstelle zu unixoiden 
Betriebssystemen beschrieben.

von P. S. (Gast)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

Ja, das wäre die POSIX-Variante. Es gäbe auch noch ftw(), auf GNU gibts 
auch noch scandir(), welches ganz nützlich ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und unter Windows gibt es die Win32-API-Funktionen FindFirstFile & 
FindNextFile, mit denen dasselbe erreicht werden kann.

von P. S. (Gast)


Lesenswert?

Sven P. schrieb:
> Ja, das wäre die POSIX-Variante.

Jop, wollte dir nicht widersprechen :-)

von P. S. (Gast)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

Das kann man mit glob() (POSIX) und m.W.n. auch mit scandir (GNU).

von ... (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.