readdir 和 opendir 是在許多編程語言中用于處理目錄的函數,特別是在 C 語言及其衍生語言中。它們通常用于 POSIX 標準庫中,用于文件系統操作。這兩個函數之間的關系是協同工作的,用于遍歷目錄中的文件和子目錄。
opendir 函數用于打開一個目錄流,并返回一個指向 DIR 類型的指針。這個指針用于后續的目錄操作。如果成功,目錄流被打開;如果失敗,則返回 NULL。
DIR *opendir(const char *name);
readdir 函數用于讀取 opendir 打開的目錄流中的下一個目錄項。每次調用 readdir 都會返回一個指向 struct dirent 的指針,該結構體包含有關目錄項的信息(如文件名)。當沒有更多的目錄項時,readdir 返回 NULL。
struct dirent *readdir(DIR *dirp);
使用這兩個函數的基本步驟通常如下:
opendir 打開一個目錄。readdir 來遍歷目錄中的所有條目。closedir 函數)。示例代碼:
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
在這個示例中,程序打開當前目錄(.),然后遍歷并打印所有文件和子目錄的名稱,最后關閉目錄流。