Как найти подкаталог в каталоге?
Данная программа должна выводить файлы из каталога и подкаталогов. То, что это реализуется с помощью рекурсии - это да. Но у меня возникла проблема с проверкой на папку. А именно с проверкой S_ISDIR. Не совсем могу понять, как это исправить.
int inside = scandir("my_projects/", &namelist, NULL, alphasort);
struct stat buff;
while (inside--)
{
if (stat(namelist[inside]->d_name, &buff) != 0)
{
if(S_ISDIR(buff.st_mode)){
//должен зайти, если папка
}
cout << namelist[inside]->d_name << endl;
}
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Поле d_name содержит имя файла. Чтобы передать его в stat, надо приписать к нему путь до каталога который вы сканировали. А так у вас stat должен сплошные ошибки возвращать.
int inside = scandir("my_projects/", &namelist, NULL, alphasort);
struct stat buff;
while (inside--) {
string s = string("my_projects/") + namelist[inside]->d_name;
if (stat(s.c_str(), &buff) == 0) {
if (S_ISDIR(buff.st_mode)) {
cout << "d ";
}
cout << namelist[inside]->d_name << endl;
}
}