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 只包含文件名,不包含路径。如果需要完整路径,可以将目录名和文件名拼接起来。