温馨提示×

如何用readdir实现目录遍历

小樊
39
2026-01-09 18:27:30
栏目: 编程语言

readdir 是一个用于读取目录内容的函数,通常在 C 语言中使用。要使用 readdir 实现目录遍历,你需要遵循以下步骤:

  1. 包含必要的头文件:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
  1. 打开目录:
DIR *dir = opendir("path/to/directory");
if (dir == NULL) {
    perror("opendir");
    exit(EXIT_FAILURE);
}

将 “path/to/directory” 替换为你要遍历的目录路径。

  1. 读取目录内容:

使用 readdir 函数读取目录中的每个条目。当 readdir 返回 NULL 时,表示已经到达目录末尾。

struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
    // 处理目录条目
}
  1. 处理目录条目:

在循环中,你可以使用 entry->d_name 获取目录条目的名称。你可以根据需要对条目进行处理,例如打印名称或检查特定文件类型。

printf("Entry: %s\n", entry->d_name);
  1. 关闭目录:

在完成目录遍历后,使用 closedir 函数关闭目录。

closedir(dir);

将以上代码片段组合在一起,你将得到一个简单的目录遍历程序:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main() {
    DIR *dir = opendir("path/to/directory");
    if (dir == NULL) {
        perror("opendir");
        exit(EXIT_FAILURE);
    }

    struct dirent *entry;
    while ((entry = readdir(dir)) != NULL) {
        printf("Entry: %s\n", entry->d_name);
    }

    closedir(dir);
    return 0;
}

编译并运行此程序,它将打印指定目录中的所有文件和子目录。

0