readdir, wreaddir

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Dirent.h - Index

Header-Datei

dirent.h

Kategorie

Verzeichnisbearbeitungsroutinen

Prototyp

struct dirent *readdir(DIR *dirp);
struct wdirent *wreaddir(wDIR *dirp)

Beschreibung

Liest den aktuellen Eintrag aus einem Verzeichnis-Stream.

readdir ist auf POSIX-kompatiblen UNIX-Systemen verfügbar.

Die Funktion readdir liest den aktuellen Verzeichniseintrag aus dem Verzeichnis-Stream, auf den dirp zeigt. Im Verzeichnis-Stream wird der nächste Eintrag zum aktuellen Eintrag.

Die Funktion readdir gibt einen Zeiger auf eine dirent-Struktur zurück, die mit jedem Aufruf dieser Funktion für denselben Verzeichnis-Stream überschrieben wird. Die Struktur wird durch einen readdir-Aufruf für einen anderen Verzeichnis-Stream nicht überschrieben.

Die dirent-Struktur entspricht einem einzelnen Verzeichniseintrag. Die Struktur ist in dirent.h definiert und enthält (neben anderen Membern, auf die nicht zugegriffen werden kann) den folgenden Member:

char d_name[];

wobei d_name ein Zeichen-Array ist, das den nullterminierten Dateinamen des aktuellen Verzeichniseintrags enthält. Die Größe des Arrays ist unbestimmt. Die Länge des Dateinamens kann mit strlen ermittelt werden.

Alle gültigen Verzeichniseinträge werden zurückgegeben, einschließlich Unterverzeichnissen, den Einträgen "." und "..", Systemdateien, verborgenen Dateien und Datenträgerbezeichnungen. Nicht verwendete oder gelöschte Verzeichniseinträge werden übergangen.

Ein Verzeichniseintrag kann zwar erstellt oder gelöscht werden, während ein Verzeichnis-Stream gelesen wird, die Funktion readdir gibt den betreffenden Verzeichniseintrag aber nicht unbedingt zurück. Durch Zurücksetzen des Verzeichnisses mit rewinddir oder erneutes Öffnen des Verzeichnisses mit opendir wird sichergestellt, dass readdir den aktuellen Zustand des Verzeichnisses widerspiegelt.

Die Funktion wreaddir ist die Unicode-Version von readdir. Sie unterscheidet sich von readdir hauptsächlich durch die Verwendung der Struktur wdirent.

Rückgabewert

Bei erfolgreicher Ausführung gibt readdir einen Zeiger auf den aktuellen Verzeichniseintrag für den Verzeichnis-Stream zurück.

Wenn das Ende des Verzeichnisses erreicht wurde oder wenn dirp auf keinen geöffneten Verzeichnis-Stream verweist, gibt readdir NULL zurück.

Beispiel

#include <dirent.h>
void print_dir(wchar_t* dir_name)
{
  /* Verzeichnis öffnen und auf Erfolg prüfen */
  wDIR* dir = wopendir(dir_name);
  wdirent* ent;

  if (!dir)
    return;

  /* In den Verzeichnis-Stream navigieren */
  while (ent = wreaddir(dir)) {
    /* Namen des Eintrags ausgeben */
    printf("%ls\n", ent->d_name);
  }
}

Portabilität

POSIX Win32 ANSI C ANSI C++
readdir

+

+

wreaddir

+