- •Лабораторная работа №5
- •Теоретические сведения
- •Функция поиска файла или каталога на диске findfirst
- •Функция продолжения поиска файла findnext
- •Пример использования функций findfirst и findnext.
- •Строка аргументов
- •Примеры программирования
- •Текст программы.
- •Пояснения к программе.
- •Текст программы.
- •Пояснения к программе.
- •Контрольные вопросы.
- •Лабораторное задание
- •Порядок выполнения лабораторной работы
- •Основные функции работы с каталогами файловой системы
- •Варианты заданий.
Пояснения к программе.
Вся информация о найденных файлах заносится в одно-связанный список, который в последствии сортируется и выводится на экран.
Структура DIR содержит описание информации о файле.
Структура list - это описание элемента одно-связанного списка.
Переменные pntr и p - это рабочие переменные, типа указатель на элемент списка.
Переменная min - это адрес элемента списка с информацией о файле, имя которого необходимо расположить в самом начале списка.
Переменная dir - это переменная типа структуры DIR. Через эту переменную происходит обмен информацией.
Сортировка одно-связанного списка происходит следующим образом. Просматриваем последовательно все элементы списка. Список разбиваем на две части: отсортированную и не отсортированную. Определяем адрес элемента (min), с именем файла, который будет вначале списка, как первый элемент в не отсортированной части.
Указатель p - это адрес первого не отсортированного элемента списка. В не отсортированной части ищем элемент, удовлетворяющий условию сортировки ( функция strcmp ) и информацию найденного элемента записываем по адресу переменной p, а информацию по адресу p записываем на место найденного элемента min ( обмен через переменную dir ).
После завершения сортировки, выводим на печать содержимое информационной части одно-связанного списка. Одновременно происходит удаление списка из памяти.
Контрольные вопросы.
1. Какие файлы содержат прототипы функций работы с каталогами?
2. Каково назначение функции findfirst?
3. Какая функция продолжает поиск файлов, заданных в функции findfirst?
4. Какие аргументы может использовать функция main?
5. Каково минимальное количество аргументов передаваемых программе?
Лабораторное задание
Напишите программу в соответствии с вариантом задания. При написании программы используйте функции управления экраном.
Порядок выполнения лабораторной работы
1. Составьте текст программы, соответствующий Вашему варианту задания.
2. Отладьте и выполните программу с аргументами и без аргументов.
Приложение
Основные функции работы с каталогами файловой системы
Подключаемый файл dir.h
int chdir ( char *pathname );
изменяет текущий каталог в соответствии с pathname. Pathmame должен указывать на существующий каталог.
Не позволяет изменить имя устройства.
Возвращаемое значение:
0 - успех
1 - ошибка.
char* getcwd ( char *buf , int n );
читает полное имя текущего рабочего каталога (включая имя устройства) длины не более n символов, сохраняя его в buf.
Возвращаемое значение:
адрес buf , или NULL в случае ошибки.
void fnmerge ( char * path,
char *drive,
char *dir,
char *name,
char * ext );
создает полное имя файла из отдельных компонент:
drive - устройство, например С:
dir - путь каталогов, например \DOS\BGI\
name - имя, например egavga
ext - расширение, например .bgi
path - содержит адрес буфера, в котором достаточно места, для полного имени файла.
int fnsplint ( char * path,
char *drive,
char *dir,
char *name,
char * ext );
разбивает полное имя файла, заданное в path, на четыре компоненты (см. Функцию fnmerge).
int getcurdir ( int drive , char *direc );
читает имя текущего рабочего каталога на указанном параметром drive устройстве.
Значение drive равное 0 соответствует устройству "A", 1 - "В", 2 - "С" и т.д.
Имя каталога записывается в direc.
Возвращаемое значение:
0 - успех
-1 - ошибка.
int getdisk ( void );
возвращает номер текущего диска.
0 - диск А,
1 - диск В,
2 - диск С и т. д.
int setdisk ( int drive );
устанавливает устройство drive.
Возвращаемое значение - общее число дисков, имеющихся в наличии.
