溫馨提示×

如何用readdir創建文件列表

小樊
51
2025-05-26 21:42:58
欄目: 編程語言

使用 readdir 函數可以遍歷目錄并創建文件列表。以下是一個使用 C 語言編寫的示例代碼,演示如何使用 readdir 函數讀取目錄中的所有文件和子目錄,并將它們存儲在一個列表中:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

int main() {
    DIR *dir;
    struct dirent *entry;
    char path[1024];

    // 打開目錄
    dir = opendir(".");
    if (dir == NULL) {
        perror("opendir");
        return EXIT_FAILURE;
    }

    // 遍歷目錄中的所有條目
    while ((entry = readdir(dir)) != NULL) {
        // 跳過當前目錄和父目錄的特殊條目
        if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
            continue;
        }

        // 構建完整路徑
        snprintf(path, sizeof(path), "./%s", entry->d_name);

        // 打印文件或目錄名
        printf("%s\n", path);
    }

    // 關閉目錄
    closedir(dir);

    return EXIT_SUCCESS;
}

代碼說明:

  1. 打開目錄:使用 opendir 函數打開當前目錄(.)。
  2. 遍歷目錄:使用 readdir 函數遍歷目錄中的每個條目。
  3. 跳過特殊條目:跳過當前目錄(.)和父目錄(..)的特殊條目。
  4. 構建完整路徑:使用 snprintf 函數構建每個文件或目錄的完整路徑。
  5. 打印文件或目錄名:打印每個文件或目錄的完整路徑。
  6. 關閉目錄:使用 closedir 函數關閉目錄。

注意事項:

  • readdir 函數返回的是一個指向 dirent 結構體的指針,該結構體包含有關目錄條目的信息,如文件名、文件類型等。
  • dirent 結構體中的 d_name 字段包含目錄條目的名稱。
  • 在構建完整路徑時,確保路徑緩沖區足夠大以避免緩沖區溢出。

通過這種方式,你可以使用 readdir 函數創建一個目錄中的文件和子目錄列表。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女