readdir 函数是用于读取目录内容的 POSIX 标准函数。它在成功时返回一个指向 dirent 结构的指针,该结构包含关于目录中下一个条目的信息。如果到达目录流的末尾,则返回 NULL。
dirent 结构通常包含以下字段:
d_ino: 目录项的 inode 号。d_off: 目录项在目录文件中的偏移量。d_reclen: dirent 结构的长度。d_name: 目录项的名称,是一个以空字符结尾的字符串。示例代码如下:
#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("Name: %s\n", entry->d_name);
}
closedir(dir);
return EXIT_SUCCESS;
}
在这个示例中,readdir 函数被用来遍历当前目录中的所有条目,并打印出每个条目的名称。注意,readdir 返回的 dirent 结构中的 d_name 字段只包含文件名,而不包括路径。如果你需要完整的路径,你需要将目录名和文件名拼接起来。