Программирование на C и C++

Онлайн справочник программиста на C и C++

closedir, opendir, readdir, rewinddir

int closedir(DIR *ptr)

DIR *opendir(char *dirname)

struct dirent *readdir(DIR *ptr)

void rewinddir(DIR *ptr)

Прототип: 
Описание: 

Эти функции не определены стандартом ANSI С. Они включены для обеспечения совместимости с системой UNIX.

Функция opendir() открывает поток каталога и возвращает указатель на структуру типа DIR, которая содержит информацию о каталоге. Не следует модифицировать содержимое данной струк­туры. Функция closedir() закрывает поток каталога, на который указывает ptr.

Функция readdir() возвращает название следующего файла в каталоге. Иными словами, функ­ция readdir() читает оглавление каталога по одному файлу за раз. Параметр ptr должен указы­вать на поток каталога, открытый с помощью opendir(). Структура dirent определена для DOS следующим образом:

 

Таким образом, после вызова функции readdir() параметр d_name содержит имя следующего файла в каталоге. Для Windows длина d_name равна 260 байтам. Для OS/2 длина равна 256 байтам.

Функция rewinddir() вызывает возвращение в начало каталога, на который указывает ptr и ко­торый был предварительно получен с помощью opendir(). Это означает возвращение к первой позиции в каталоге. Благодаря этому каталог может быть прочитан снова.

Функция closedir() в случае успеха возвращает 0 и —1 в противном случае. При неудаче переменная errno устанавливается равной EBADF (недействительный каталог). Функция opendir() возвращает NULL в том случае, если каталог не может быть открыт. При этом переменная errno устанавливается равной либо ENOENT (каталог не найден), либо ENOMEM (недостаточно памя­ти). Функция readdir() возвращает NULL, когда достигается конец каталога.