Описание функций Си

Findfirs



     findfirst

Функция Просматривает директорию диска.

Синтаксис #include

#include

int findfirst(char * pathname, struct ffblk * ffblk, int attrib);

Файл, содержищий dir.h прототип

Описание Функция findfirst производит поиск в директории диска посредством системного вызова DOS 0x4E.

Параметр pathname представляет собой символьную строку, содержащую необязательную спецификацию дискового устройства, маршрут поиска и имя иско- мого файла. Имя файла может содержать шаблоны (такие как ? или *). Если соответствующий файл найден, структура ffblk заполняется информацией о файле и каталоге, его содержащем.

Cтруктура ffblk определена следующим образом:

struct ffblk { char ff_reserved[21]; /* зарезервировано DOS */ char ff_attrib; /* атрибуты */ int ff_ftime; /* время */ int ff_fdate; /* дата */ long ff_fsize; /* размер */ char ff_fname[13]; /* имя файла */ };

Параметр attrib - это используемый в MS-DOS бай- татрибут файла, который употребляется при выборе подходящих для поиска файлов. Параметр attrib мо- жет быть одной из следующих определенных в файле dos.h констант:

FA_RDONLY - атрибут "только чтение"; FA_HIDDEN - скрытый файл; FA_SYSTEM - системный файл; FA_LABEL - метка тома; FA_DIREC - директория; FA_ARCH - архив.

Более подробную информацию об этих атрибутах вы найдете в документе "Справочное руководство прог- раммиста по DOS".



Отметим, что ff_ftime и ff_fdate содержат битовые поля для определения даты и времени. Эти структу- ры поддерживаются DOS. Обе 16-битовые структуры делятся на 3 поля:

ff_ftime: биты 0-4 Секунды, деленные на 2. (т.е. 10 соответствует 20 секундам). биты 5-10 минуты ьиты 11-15 часы

ff_fdate: биты 0-4 день биты 5-8 месяц биты 9-15 год с 1980 (т.е. 9 соответствует 1989)

Структура ftime объявленная в io.h, использует поля времени и даты соответствующие этом. Смотри- те функции getftime и setftime.

Возвращаемое При успешном завершении, то есть при успешном значение поиске файла, соответствующего параметру pathname, функция findfirst возвращает значение 0.

Если подходящих файлов больше не существует, или в имени файла допущена ошибка, функция возвращают значение -1 и глобальная переменная errno получа- ет одно из следующих значений:

ENOENT - маршрут доступа или имя файла не найде- ны; ENMFILE - нет больше файлов.

Переносимость Функция уникальна для DOS.

Смотрите также

Пример:

#include

#include

int main(void) { struct ffblk ffblk; int done; printf("Листинг директории *.*\n"); done = findfirst(**.**,&ffblk,0); while (!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); } return 0; }

Результат:

Листинг директории *.* FINDFRST.C FINDFRST.OBJ FINDFRST.MAP FINDFRST.EXE



Содержание раздела