在 Debian 系統中,readdir 函數是用于讀取目錄內容的函數,其定義在 <dirent.h> 頭文件中。readdir 函數的原型如下:
struct dirent *readdir(DIR *dirp);
readdir 函數只有一個參數:
DIR *dirp:這是一個指向 DIR 類型的指針,表示要讀取的目錄流。通常通過 opendir 函數打開目錄并返回一個 DIR 指針。readdir 函數的作用是從目錄流 dirp 中讀取下一個目錄項,并返回一個指向 struct dirent 結構的指針。如果已經到達目錄的末尾,則返回 NULL。
struct dirent 結構通常包含以下字段:
ino_t d_ino:目錄項的 inode 號。off_t d_off:目錄項在目錄文件中的偏移量。unsigned short d_reclen:目錄項的長度。char d_type:目錄項的類型(例如,DT_REG 表示常規文件,DT_DIR 表示目錄)。char d_name[]:目錄項的名稱。以下是一個簡單的示例,演示如何使用 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");
return EXIT_FAILURE;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return EXIT_SUCCESS;
}
這個示例程序打開當前目錄(.),然后使用 readdir 函數讀取并打印目錄中的每個條目名稱。最后,關閉目錄流。