opendir, wopendir

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu dirent.h - Index


Header-Datei

dirent.h

Kategorie

Verzeichnisbearbeitungsroutinen

Prototyp

DIR *opendir(const char *dirname);

wDIR *wopendir(const wchar_t *dirname);

Beschreibung

Öffnet einen Verzeichnis-Stream zum Lesen.

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

Die Funktion opendir öffnet einen Verzeichnis-Stream zum Lesen. Der Name des zu lesenden Verzeichnisses wird mit dirname angegeben. Der Stream ist so angelegt, dass der erste Verzeichniseintrag gelesen wird.

Der Verzeichnis-Stream wird durch die in dirent.h definierte Struktur DIR dargestellt. Diese Struktur enthält keine Felder, auf die Benutzer zugreifen können. Mehrere Verzeichnis-Streams können geöffnet und gleichzeitig gelesen werden. Während ein Verzeichnis-Stream gelesen wird, können Verzeichniseinträge erstellt und gelöscht werden.

Mit der Funktion readdir können aufeinander folgende Einträge in einem Verzeichnis-Stream gelesen werden. Mit der Funktion closedir wird ein Verzeichnis-Stream entfernt, wenn er nicht mehr benötigt wird.

Rückgabewert

Bei erfolgreicher Ausführung gibt opendir einen Zeiger auf einen Verzeichnis-Stream zurück, der in Aufrufen von readdir, rewinddir und closedir benutzt werden kann.

Im Fehlerfall (wenn das Verzeichnis nicht geöffnet werden kann) gibt die Funktion NULL zurück und weist der globalen Variablen errno folgenden Wert zu:

ENOENT

The directory does not exist (Das Verzeichnis ist nicht vorhanden)

ENOMEM

Not enough memory to allocate a DIR object (Es ist nicht ausreichend Speicher für die Zuweisung eines DIR-Objekts vorhanden)



Beispiel



  /* opendir.c - opendir(), readdir(), closedir() testen */
 
 #include <dirent.h>
 #include <stdio.h>
 #include <stdlib.h>
 
 void scandir(char *dirname)
 {
    DIR *dir;
    struct dirent *ent;
 
    printf("First pass on '%s':\n",dirname);
    if ((dir = opendir(dirname)) == NULL)
    {
      perror("Unable to open directory");
      exit(1);
    }
    while ((ent = readdir(dir)) != NULL)
      printf("%s\n",ent->d_name);
 
    printf("Second pass on '%s':\n",dirname);
    rewinddir(dir);
    while ((ent = readdir(dir)) != NULL)
      printf("%s\n",ent->d_name);
    if (closedir(dir) != 0)
      perror("Unable to close directory");
 }
 
 void main(int argc,char *argv[])
 {
    if (argc != 2)
    {
      printf("usage: opendir dirname\n");
      exit(1);
    }
    scandir(argv[1]);
    exit(0);
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

opendir

+

+

wopendir