Linux c++如何遍历输出目录下所有文件的绝对路径
时间: 2024-05-05 12:15:35 浏览: 110
可以使用 opendir()、readdir() 和 closedir() 函数来遍历输出目录下所有文件的绝对路径。具体实现如下:
```c
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
void traverse(char *dir) {
DIR *dp;
struct dirent *entry;
char path[1024];
if ((dp = opendir(dir)) == NULL) {
fprintf(stderr, "cannot open directory: %s\n", dir);
return;
}
chdir(dir);
while ((entry = readdir(dp)) != NULL) {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
printf("%s/%s\n", getcwd(NULL, 0), entry->d_name);
if (entry->d_type == DT_DIR) {
sprintf(path, "%s/%s", dir, entry->d_name);
traverse(path);
}
}
chdir("..");
closedir(dp);
}
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: %s directory_name\n", argv[0]);
return 1;
}
traverse(argv[1]);
return 0;
}
```
在上面的代码中,我们定义了 traverse() 函数来遍历目录,并输出每个文件的绝对路径。具体实现如下:
1. 首先,我们打开目录并检查是否成功打开。
2. 然后,我们进入该目录,并遍历该目录下的所有文件。
3. 对于每个文件,我们输出其绝对路径,并检查是否为子目录。如果是子目录,则递归遍历该子目录。
4. 最后,我们返回到上一级目录,并关闭该目录。
阅读全文