В самих стандартах C или C ++ нет ничего, что касается обработки каталогов, но практически любая ОС, достойная своей солидности, будет иметь такого зверя, например, функции findfirst/findnext
или readdir
.
То, как вы это делаете, - это простой цикл над этими функциями, проверяющий конец строк, возвращаемых для нужного вам расширения.
Что-то вроде:
char *fspec = findfirst("/tmp");
while (fspec != NULL) {
int len = strlen (fspec);
if (len >= 4) {
if (strcmp (".foo", fspec + len - 4) == 0) {
printf ("%s\n", fspec);
}
}
fspec = findnext();
}
Как уже говорилось, фактические функции, которые вы будете использовать для обхода каталога, зависят от ОС.
Для UNIX почти наверняка будет использоваться opendir , readdir и closedir . Этот код является хорошей отправной точкой для этого:
#include <dirent.h>
int len;
struct dirent *pDirent;
DIR *pDir;
pDir = opendir("/tmp");
if (pDir != NULL) {
while ((pDirent = readdir(pDir)) != NULL) {
len = strlen (pDirent->d_name);
if (len >= 4) {
if (strcmp (".foo", &(pDirent->d_name[len - 4])) == 0) {
printf ("%s\n", pDirent->d_name);
}
}
}
closedir (pDir);
}