Попробуйте часть кода до слова main заменить на #include "stdafx.h" //1 #include <iostream> //2 using namespace std; //3 |
Работа с файлами
10.4. Поиск файлов в каталогах
Одной из довольно распространенных процедур является составление списка файлов указанного каталога, имена которых удовлетворяют заданной маске. Под управлением MS-DOS такая задача решается с помощью функций findfirst (найти первый файл) и findnext (найти следующий файл). Обе функции используют в качестве одного из своих аргументов адрес структуры типа ffblk, в которую они заносят информацию о найденном файле:
struct ffblk { char ff_reserved[21]; //зарезервировано для MS-DOS char ff_attrib; //байт атрибутов найденного файла int ff_time; //время создания/модификации файла int ff_date; //дата создания/модификации файла long ff_size; //размер файла char ff_name[13]; //имя найденного файла };
Описание этой структуры и прототипы указанных функций находятся в заголовочном файле dir.h. Обе функции возвращают нулевое значение, если поиск закончился удачно. Достаточно четкое представление об их использовании дает следующий пример, который выводит на экран список всех файлов с расширением .cpp из каталога c:\bc\bin:
#include <stdio.h> #include <conio.h> #include <dir.h> void main() { struct ffblk qq; int a; printf("Список файлов *.cpp\n"); a=findfirst("c:\\bc\\bin\\*.cpp",&qq,0); //поиск первого файла while(!a) { printf(" %s\n",qq.ff_name); a=findnext(&qq); //поиск следующего файла } getch(); }
Первый аргумент функции findfirst определяет маску, которой должно удовлетворять имя искомого файла. Третий аргумент этой функции имеет тип int и позволяет фильтровать найденные объекты по любой комбинации их атрибутов в файловой системе (Read Only, Hidden, System, Archive, Volume, Directory). Нулевое значение этого параметра, использованное в примере, игнорирует отбор по атрибутам.
Точно таким же способом можно осуществлять поиск нужных файлов в среде BCB.