readdir 是一个在 Linux 系统中用于读取目录内容的函数
readdir 函数的原型如下:
#include <dirent.h> struct dirent *readdir(DIR *dirp); 参数:
dirp:一个指向 DIR 类型的指针,表示要读取的目录流。返回值:
struct dirent 结构体的指针,该结构体包含了目录中的一个条目(文件或子目录)的信息。NULL。struct dirent 结构体包含以下成员:
d_ino:inode 号,表示文件或目录的唯一标识。d_off:偏移量,用于下次调用 readdir 时从该位置继续读取。d_reclen:结构体的长度。d_name:文件或目录的名称,以 null 结尾的字符串。以下是一个简单的示例,展示如何使用 readdir 函数读取目录内容:
#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"); exit(EXIT_FAILURE); } while ((entry = readdir(dir)) != NULL) { printf("%s\n", entry->d_name); } closedir(dir); return 0; } 这个程序会列出当前目录下的所有文件和子目录。注意,readdir 返回的 d_name 只包含文件名,不包含路径。如果需要完整路径,可以将目录名和文件名拼接起来。