linux给定一个目录文件,打印该目录下所有子目录和文件的名称,并不断递归访问子目录,并打印其属子目录和文件名称
时间: 2023-12-10 08:41:56 浏览: 39
这里是一个简单的递归函数,可以实现这个功能:
```c
#include <stdio.h>
#include <string.h>
#include <dirent.h>
void print_dir_content(char *path) {
DIR *dir = opendir(path);
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
char subpath[1024];
sprintf(subpath, "%s/%s", path, entry->d_name);
printf("Subdirectory: %s\n", subpath);
print_dir_content(subpath);
} else {
printf("File: %s/%s\n", path, entry->d_name);
}
}
closedir(dir);
}
int main() {
print_dir_content(".");
return 0;
}
```
这个函数接受一个路径作为参数,并打印该路径下所有文件和子目录的名称。如果遇到子目录,它将递归调用自己来打印它的内容。注意,我们需要跳过 "." 和 ".." 这两个特殊目录,否则该函数会进入无限循环。