Я пытаюсь получить количество каталогов в папке, кроме файлов, но я не могу получить правильный результат. Кто-нибудь поможет мне решить эту проблему? Особенно, что мне следует отправить в функцию isDirectory()?Как я могу получить количество каталогов в каталоге?
int listFilesIndir(char *currDir)
{
struct dirent *direntp;
DIR *dirp;
int x ,y =0 ;
if ((dirp = opendir(currDir)) == NULL)
{
perror ("Failed to open directory");
return 1;
}
while ((direntp = readdir(dirp)) != NULL)
{
printf("%s\n", direntp->d_name);
x= isDirectory(dirp);
if(x != 0)
y++;
}
printf("direc Num : %d\n",y);
while ((closedir(dirp) == -1) && (errno == EINTR)) ;
return 0;
}
int isDirectory(char *path)
{
struct stat statbuf;
if (stat(path, &statbuf) == -1)
return 0;
else
return S_ISDIR(statbuf.st_mode);
}
Что вы получаете вместо «правильного результата»? – 2013-04-01 20:37:44
Передача "dirp" в isDirectory() кажется неправильной. Это опечатка? – kkrambo
Этот комментарий может быть совершенно бесполезным, но мне больно видеть так много строк кода для концептуального однострочного ... 'ls -d/*/| wc -l' –
shx2