readdir 函数是用于读取目录内容的 POSIX 标准函数,在 C/C++ 编程中广泛使用。它通常与 opendir 和 closedir 函数一起使用,来遍历一个目录中的所有文件和子目录。
下面是一个简单的 readdir 函数的使用教程:
首先,确保包含了必要的头文件:
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
使用 opendir 函数打开一个目录,并返回一个 DIR 类型的指针:
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
使用 readdir 函数读取目录中的每一项:
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
readdir 返回一个指向 dirent 结构体的指针,该结构体包含有关目录项的信息,其中 d_name 是目录项的名称。
完成读取后,使用 closedir 函数关闭目录:
closedir(dir);
下面是一个完整的示例程序,列出指定目录中的所有文件和子目录:
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return EXIT_SUCCESS;
}
readdir 返回的 dirent 结构体中的 d_name 字段是一个以 null 结尾的字符串,表示目录项的名称。readdir 时需要注意字符编码的问题,尤其是在处理非 ASCII 字符时。. 和 ..,分别代表当前目录和父目录。通常可以根据需要过滤掉这些条目。通过以上步骤,你可以使用 readdir 函数读取并处理目录中的内容。