scandir()

Искать элементы в директории

Прототип:

#include <sys/types.h>
#include <dirent.h>
int scandir( char *dirname,
struct dirent * (*namelist[]),
int (*select)( struct dirent * ),
int (*compar)( const void *, const void * ) );

Аргументы:

dirname
Имя каталога, который нужно просканировать.
namelist
Указатель на буфер, где scandir() может сохранить указатель на созданный массив записей каталога ( struct dirent).
select
Указатель на предоставленную пользователем подпрограмму, которую scandir() вызывает, чтобы выбрать, какие записи включить в список. Подпрограмме select передается указатель на запись в каталоге ( struct dirent). Если запись каталога должна быть включена в массив, должно возвращаться ненулевое значение. Если select NULL, включаются все записи каталога.
compar
Указатель на предоставленную пользователем подпрограмму, переданную qsort() для сортировки заполненного массива. Если этот указатель равен NULL, массив не сортируется. Можно использовать alphasort() в качестве параметра сравнения для сортировки массива по алфавиту.

Библиотека:

libc

Описание:

Функция scandir() читает каталог dirname и создает массив указателей на записи каталога, используя malloc() для выделения памяти. Функция возвращает количество записей в массиве и сохраняет указатель на массив по адресу namelist.

Вы можете освободить память, выделенную для массива, вызвав free(). Освободите каждый указатель в массиве, а затем освободите сам массив.

Возвращаемое значение:

Количество записей в массиве или -1, если каталог не может быть открыт для чтения, или malloc() не может выделить достаточно памяти для хранения всех структур данных.

Классификация:

Legacy Unix

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct dirent, alphasort(), closedir(), free(), malloc(), opendir(), qsort(), readdir(), rewinddir(), seekdir(), telldir()




Предыдущий раздел: Описание API системной библиотеки