copendir
函数本身并不直接获取子目录,而是用于打开一个目录流,以便后续使用其他相关函数(如 readdir
)来读取该目录中的条目。要获取子目录,你需要结合使用 opendir
、readdir
和 closedir
函数。以下是一个简单的示例,展示了如何使用这些函数来获取并打印一个目录中的所有子目录:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
int is_directory(const char *path) {
struct stat path_stat;
if(stat(path, &path_stat) != 0)
return 0;
return S_ISDIR(path_stat.st_mode);
}
int main() {
const char *dir_path = "/path/to/your/directory"; // 替换为你的目录路径
DIR *dir_stream = opendir(dir_path);
if (dir_stream == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
struct dirent *entry;
while ((entry = readdir(dir_stream)) != NULL) {
if (is_directory(entry->d_name)) {
printf("Subdirectory: %s\n", entry->d_name);
}
}
closedir(dir_stream);
return EXIT_SUCCESS;
}
在这个示例中:
opendir
函数用于打开指定路径的目录流。readdir
函数用于读取目录流中的条目。is_directory
函数用于检查一个条目是否是目录。closedir
函数用于关闭目录流。请注意,这个示例仅打印出直接位于指定目录中的子目录。如果你需要递归地获取所有子目录,你需要编写一个递归函数来遍历整个目录树。