Нужна функция которая позволит узнать список подкаталогов.Заранее благодарен.
>Нужна функция которая позволит узнать список подкаталогов.man 3 opendir
>>Нужна функция которая позволит узнать список подкаталогов.
>
>man 3 opendir
Да есть там функция readdir - то что надо но только она выдаёт всё что есть в каталоге, а можно както отсортировать только подкаталоги?
>>>Нужна функция которая позволит узнать список подкаталогов.
>>
>>man 3 opendir
>
>
>Да есть там функция readdir - то что надо но только она
>выдаёт всё что есть в каталоге, а можно както отсортировать только
>подкаталоги?
Нашел - функция stat может распознать каталог или нет!Спасибо!
>Да есть там функция readdir - то что надо но только она
>выдаёт всё что есть в каталоге, а можно както отсортировать только
>подкаталоги?Ты получаешь указатель на struct dirent
Там есть поле d_type, по которому и можешь фильтровать.
>>Да есть там функция readdir - то что надо но только она
>>выдаёт всё что есть в каталоге, а можно както отсортировать только
>>подкаталоги?
>
>Ты получаешь указатель на struct dirent
>Там есть поле d_type, по которому и можешь фильтровать.
Спасибо, я как писал уже нашёл.Спасибо.
>Нужна функция которая позволит узнать список подкаталогов.
>
>Заранее благодарен.
хм, стандартной нет, только через readdir(рекурсивно), хотя есть gnu"шная, nftw - вызывает callback ф-цию при проходе по дереву на каждом листке.
>>Нужна функция которая позволит узнать список подкаталогов.
>>
>>Заранее благодарен.
>
>
>хм, стандартной нет, только через readdir(рекурсивно), хотя есть gnu"шная, nftw - вызывает
>callback ф-цию при проходе по дереву на каждом листке.
Вижу что для этой функции выдаётся и флаг(каталог это или файл), попробую.Спасибо.
>Нужна функция которая позволит узнать список подкаталогов.
>
>Заранее благодарен.
Функция scandir:
ну где то вот так.
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>static int dir(const struct dirent * eps)
{
if(eps->d_type == 4 )
return 1;
return 0;
}int main (int argc,char *argv[])
{
struct dirent ** eps;
int n;
int i;n = scandir("./",&eps,dir,alphasort);
if(n > 0){
for(i = 0;i < n;i++){
printf("\n name >> %s",eps[i]->d_name);
}
}
else{
printf("not dir");
}
return 0;
}
Даже пример дали, спасибо!