readdir如何實現Linux目錄遍歷

readdir如何實現Linux目錄遍歷

linux系統中,readdir函數用于讀取指定目錄下的文件和子目錄信息。該功能通過包含dirent.h頭文件來實現。以下是一個使用readdir函數遍歷目錄的簡單示例:

#include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <String.h>  int main(int argc, char *argv[]) {     DIR *dir;     struct dirent *entry;      // 參數檢查     if (argc != 2) {         fprintf(stderr, "Usage: %s <directory>n", argv[0]);         return EXIT_FAILURE;     }      // 打開目標目錄     dir = opendir(argv[1]);     if (dir == NULL) {         perror("opendir");         return EXIT_FAILURE;     }      // 遍歷目錄內容     while ((entry = readdir(dir)) != NULL) {         printf("%sn", entry->d_name);     }      // 關閉已打開的目錄     closedir(dir);      return EXIT_SUCCESS; }

編譯與執行

將以上代碼保存為listdir.c,然后運行如下命令進行編譯:

gcc -o listdir listdir.c

隨后通過傳遞一個目錄路徑作為參數來運行程序:

./listdir /path/to/directory

功能說明

  1. 頭文件引用

    • stdio.h:提供標準輸入輸出相關函數。
    • stdlib.h:定義常用工具函數,如錯誤處理等。
    • dirent.h:聲明與目錄操作有關的函數和結構體
    • string.h:提供字符串處理函數。
  2. 參數校驗

    檢查用戶是否傳入了一個有效的目錄路徑作為參數。

  3. 目錄打開

    利用opendir函數嘗試打開用戶指定的目錄。若打開失敗,則輸出錯誤信息并退出程序。

  4. 目錄條目讀取

    使用readdir逐個讀取目錄中的每個條目,返回值為指向dirent結構體的指針。其中,d_name字段表示當前條目的名稱。

  5. 關閉目錄

    完成遍歷后調用closedir函數釋放資源。

注意事項