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