int findfirst(const char *fname, struct ffblk *ptr, int attrib)
int findnext( struct ffblk *ptr)
Необходимо включить фaйл dos.h, который содержит макросы, используемые в качестве значения параметра attrib. Эти функции не определены стандартом ANSI С. Функция findfirst() ищет первое имя файла, соответствующее образцу поиска, на который указывает параметр fname. Имя файла может включать в себя диск и путь. Также имя файла может включать в себя шаблоны поиска * и ?. При нахождении подходящего файла структура, на которую указывает ptr, заполняется информацией об этом файле.
Структура ffblk определена для DOS следующим образом:
Структура ffblk определена для Windows следующим образом:
Параметр attrib определяет тип файлов, которые необходимо найти с помощью функции findfirst(). Если attrib имеет значение 0, то допустимыми являются все файлы, подходящие под шаблон поиска. Для того, чтобы обеспечить более селективный поиск, параметр attrib может принимать одно из значений, определяемых следующими макросами:
Макрос | Значение |
---|---|
FA_RDONLY | Файл только для чтения |
FA_HIDDEN | Скрытый файл |
FA_SYSTEM | Системный файл |
FA_LABEL | Метка тома |
FA_DIREC | Подкаталог |
FA_ARCH | Архивный файл |
Функция findnext() продолжает поиск, начатый функцией findfirst().
Обе функции findfirst() и findnext() в случае успеха возвращают 0. В случае неудачи возвращается — 1, а переменная errno устанавливается равной ENOENT (имя файла не найдено). Переменная _doserrno устанавливается равной либо ENMFILE (нет больше файлов в каталоге), либо ENOENT.