opendir, wopendir
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 |