编写C或C++语言程序,实现:“/root”路径和“/home”路径下目录树的遍历。
时间: 2023-09-19 13:07:04 浏览: 124
好的,以下是一个简单的程序,可以遍历/root和/home路径下的目录树:
```c++
#include <iostream>
#include <dirent.h>
#include <string.h>
void traverse(const char* dir_path);
int main() {
traverse("/root");
traverse("/home");
return 0;
}
void traverse(const char* dir_path) {
DIR* dir = opendir(dir_path);
if (dir == nullptr) {
std::cerr << "Failed to open directory: " << dir_path << std::endl;
return;
}
dirent* entry;
while ((entry = readdir(dir)) != nullptr) {
// Ignore "." and ".." directories
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
// Print the name of the entry
std::cout << entry->d_name << std::endl;
// If the entry is a directory, recursively traverse it
if (entry->d_type == DT_DIR) {
std::string subdir_path = std::string(dir_path) + "/" + entry->d_name;
traverse(subdir_path.c_str());
}
}
closedir(dir);
}
```
该程序使用了C++的标准库,以及Linux系统下的dirent.h头文件来实现目录遍历。在main函数中分别调用了traverse函数遍历/root和/home目录,traverse函数会递归遍历所有子目录,并打印出每个目录和文件的名称。
阅读全文