在Linux中,readdir
函数用于读取目录中的条目。它通常与opendir
和closedir
一起使用。以下是一个简单的示例,演示如何使用这些API来列出指定目录中的所有文件和子目录。
#include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *entry; // 检查命令行参数 if (argc != 2) { fprintf(stderr, "Usage: %s <directory> ", argv[0]); return EXIT_FAILURE; } // 打开目录 dir = opendir(argv[1]); if (dir == NULL) { perror("opendir"); return EXIT_FAILURE; } // 读取目录中的条目 while ((entry = readdir(dir)) != NULL) { printf("%s ", entry->d_name); } // 关闭目录 closedir(dir); return EXIT_SUCCESS; }
listdir.c
。gcc -o listdir listdir.c
./listdir .
opendir
函数打开一个目录流,并返回一个指向DIR
结构的指针。如果无法打开目录,则返回NULL
。readdir
函数从目录流中读取下一个目录条目,并返回一个指向dirent
结构的指针。如果到达目录流的末尾,则返回NULL
。closedir
函数关闭目录流。readdir
返回的dirent
结构包含一个名为d_name
的字段,该字段包含目录条目的名称。dirent
结构还包含其他字段,如d_type
,可以用来确定条目的类型(例如,文件、目录、符号链接等)。通过这种方式,你可以轻松地列出目录中的所有内容,并根据需要进行进一步处理。