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 只包含文件名,不包含路徑。如果需要完整路徑,可以將目錄名和文件名拼接起來。