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, когда достигается конец каталога.