【发布时间】:2013-04-01 20:30:34
【问题描述】:
我正在尝试获取文件夹中除文件之外的目录数,但我无法获得正确的结果。有人帮我解决这个问题吗?特别是我应该向 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);
}
【问题讨论】:
-
你得到什么而不是“正确的结果”?
-
将“dirp”传递给 isDirectory() 似乎是错误的。是不是打错字了?
-
这条评论可能完全没有帮助,但看到这么多行代码用于概念性单行代码,我的眼睛很痛...
ls -d <PATH>/*/ | wc -l -
正确结果表示目录数。我不想计算文件而是目录。