opendir 和 readdir 是在 C 语言中用于处理目录的两个函数,它们通常一起使用来遍历目录中的文件和子目录。这两个函数的原型在 <dirent.h> 头文件中定义。
opendir:
DIR 类型的指针,该指针用于后续的目录操作。DIR *opendir(const char *name);name 是要打开的目录的路径名。DIR 对象的指针;如果失败,返回 NULL。readdir:
DIR 流中的下一个目录项。struct dirent *readdir(DIR *dirp);dirp 是通过 opendir 打开目录流后返回的 DIR 指针。struct dirent 结构的指针,该结构包含目录项的信息;如果已经到达目录流的末尾,返回 NULL。struct dirent 结构通常包含以下字段:
ino_t d_ino:索引节点号。off_t d_off:偏移量。unsigned short d_reclen:记录长度。unsigned char d_type:文件类型。char d_name[]:文件名。使用这两个函数的基本步骤如下:
opendir 打开目录。readdir 读取目录中的每个条目,直到返回 NULL。closedir)。示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return EXIT_SUCCESS;
}
在这个示例中,程序打开当前目录(.),然后遍历并打印目录中的所有文件和子目录的名称,最后关闭目录流。