unsigned _dos_findfirst(const char *fname, int attr, struct find_t*ptr)
unsigned _dos_findnext( struct find_t *ptr)
Эти функции не определены стандартом ANSI С.
Функция _dos_findfirst() ищет первое имя, соответствующее образцу, на который указывает fname. Имя файла может включать как диск, так и путь. Кроме того, имя файла может включать в себя шаблоны подстановки * и ?. В случае нахождения соответствующего файла структура, на которую указывает ptr, заполняется информацией об этом файле.
Структура find_t определена следующим образом:
char reserved[21]; /* используется DOS */
char attrib; /* атрибуты файла */
unsigned wr_time; /* время, когда файл перезаписывался в последний раз */
unsigned wr_date; /* дата, когда файл перезаписывался в последний раз */
long size; /* размер в байтах */
char name [13]; /* имя файла */
};
Параметр attrib определяет, какой тип файлов будет найден функцией _dos_findfirst(). Параметр attrib может быть получен из одного или нескольких макросов, определенных в файле dos.h:
Макрос | Значение |
---|---|
_A_NORMAL | Нормальный файл |
_A_RDONLY | Файл только для чтения |
_A_HIDDEN | Скрытый файл |
_A_SYSTEM | Системный файл |
_A_VOLID | Метка тома |
_A_SUBDIR | Подкаталог |
_A_ARCH | Архивный файл |
Функция _dos_findnext() продолжает поиск, начатый функцией _dos_findfirst(). Буфер, на который указывает параметр ptr, должен быть тем же самым, который использовался при вызове функции _dos_findfirst().
Обе функции _dos_findfirst() и _dos_findnext() при успешном вызове возвращают 0. При неудаче или если найден более чем один файл, возвращается ненулевое значение. При возникновении ошибки переменная errno устанавливается в ENOENT (файл не найден).
#include <dos.h>
#include <stdio.h>
int main(void)
{
struct find_t f;
register int done;
done = _dos_findfirst("*.с", _A_NORMAL, &f);
while(!done) {
printf("%s %ld\n", f.name, f.size);
done = _dos_findnext (&f);
}
return 0;
}