我正在尝试获取文件夹中除中的文件外的目录数,但无法获得正确的结果。有人帮我解决这个问题吗?尤其是应该向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);
}
最佳答案
向函数发送一个目录流,并将其视为路径。
Linux和其他一些Unix系统包括一种直接获取此信息的方法:
while ((direntp = readdir(dirp)) != NULL)
{
printf("%s\n", direntp->d_name);
if (direntp->d_type == DT_DIR)
y++;
}
否则,请确保向函数发送正确的详细信息,即。
x= isDirectory(direntp->d_name);
关于c - 如何获取目录中的目录数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15751311/