在 Ubuntu / Linux 下,opendir 是 POSIX 标准库函数,用于打开一个目录流,通常和 readdir、closedir 一起使用。
下面给你一个完整、常见的用法示例。
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const char *path = "."; // 当前目录
DIR *dir;
struct dirent *entry;
dir = opendir(path);
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc opendir_test.c -o opendir_test
./opendir_test
opendirDIR *opendir(const char *name);
DIR *NULL,并设置 errnoreaddirstruct dirent *readdir(DIR *dirp);
常用字段:
entry->d_name // 文件名
closedirint closedir(DIR *dirp);
❌ 忘记 closedir
// 会导致文件描述符泄露
❌ 判断 opendir 失败方式错误
if (!dir) { } // 可以,但推荐用 NULL
. 和 ..while ((entry = readdir(dir)) != NULL) {
if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
printf("%s\n", entry->d_name);
}
man opendir
man readdir
man closedir
如果你是想:
可以直接告诉我,我可以给你对应示例。