Функция Просматривает директорию диска.
Синтаксис #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.
Смотрите также findnext
Пример:
#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