在linux系統中,readdir()函數用于遍歷指定目錄下的內容。其函數聲明如下:
#include <dirent.h> struct dirent *readdir(DIR *dirp); </dirent.h>
該函數接收一個指向DIR結構體的指針作為參數,表示已經打開的目錄流。函數執行后將返回一個指向dirent結構體的指針,其中包含了當前目錄項的相關信息。
dirent結構體的主要成員包括:
struct dirent { long d_ino; // inode編號 off_t d_off; // 目錄流中的偏移位置 unsigned short d_reclen; // 文件名長度 char d_name[]; // 文件名稱字符串 };
當readdir()成功讀取到目錄項時,會返回指向dirent結構體的有效指針;若讀取失敗或已到達目錄末尾,則返回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("文件項名稱: %sn", entry->d_name); } closedir(dir); return 0; } </string.h></dirent.h></stdlib.h></stdio.h>
此程序首先調用opendir()嘗試打開當前目錄,并對返回的目錄流指針進行有效性檢查。隨后通過循環調用readdir()逐個獲取目錄項,在獲取不到更多目錄項(返回NULL)時結束循環。每個獲取到的目錄項的文件名都會被打印輸出。最后調用closedir()關閉之前打開的目錄流資源。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END