如何列出在C特定目录中所有子目录? [英] How to list all subdirectories in a given directory in C?
本文介绍了如何列出在C特定目录中所有子目录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法来列出在C定目录路径的所有子目录?我希望我能与做STAT()
的功能,但它仅适用于文件。
Is there a way to list all subdirectories in a given directory path in C? I was hoping I would be able to do it with the stat()
function but it only works on files.
推荐答案
统计工作的目录了。
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
int num_dirs(const char* path)
{
int dir_count = 0;
struct dirent* dent;
DIR* srcdir = opendir(path);
if (srcdir == NULL)
{
perror("opendir");
return -1;
}
while((dent = readdir(srcdir)) != NULL)
{
struct stat st;
if(strcmp(dent->d_name, ".") == 0 || strcmp(dent->d_name, "..") == 0)
continue;
if (fstatat(dirfd(srcdir), dent->d_name, &st, 0) < 0)
{
perror(dent->d_name);
continue;
}
if (S_ISDIR(st.st_mode)) dir_count++;
}
closedir(srcdir);
return dir_count;
}
这篇关于如何列出在C特定目录中所有子目录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文