|
Попробуйте часть кода до слова 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.