📜  os.listdir 到数组 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:33:20.922000             🧑  作者: Mango

os.listdir 到数组 - C编程语言

在C编程语言中,使用os.listdir将文件夹中的所有文件名读入数组中是一项很常见的任务。本文将介绍如何使用C编程语言和os库中的listdir函数来完成此任务。

参考代码

以下是将文件夹中的所有文件名读入数组的C程序示例:

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

int main() {
    DIR *dir;
    struct dirent *ent;
    char *path = "path/to/folder/";
    char **files; // 用于存储文件名的数组
    int i = 0, count = 0;

    // 打开目录
    if ((dir = opendir(path)) != NULL) {
        // 统计目录中的文件数
        while ((ent = readdir(dir)) != NULL) {
            count++;
        }
        closedir(dir);
    } 
    else {
        perror("");
        return EXIT_FAILURE;
    }

    // 分配数组空间
    files = (char **)malloc(count * sizeof(char *));
    for (i = 0; i < count; i++) {
        files[i] = (char *)malloc(256 * sizeof(char));
    }

    // 读取文件名
    if ((dir = opendir(path)) != NULL) {
        i = 0;
        while ((ent = readdir(dir)) != NULL) {
            // 忽略 "." 和 ".."
            if (strcmp(ent->d_name, ".") != 0 && strcmp(ent->d_name, "..") != 0) {
                strcpy(files[i], ent->d_name);
                i++;
            }
        }
        closedir(dir);
    } 
    else {
        perror("");
        return EXIT_FAILURE;
    }

    // 在控制台输出文件名
    for (i = 0; i < count; i++) {
        printf("%s\n", files[i]);
    }

    // 释放数组空间
    for (i = 0; i < count; i++) {
        free(files[i]);
    }
    free(files);

    return 0;
}

此代码将读取path/to/folder/目录中的所有文件名,并将它们存储在一个字符串数组中。

代码解释

在上面的代码中,我们使用了opendirreaddir函数来打开和读取目录。我们首先打开目录并读取其中的所有文件,然后计算文件数并在内存中分配数组空间。我们随后再次打开文件,并读取文件名到数组中。最后,我们输出数组中的所有文件名,并释放数组空间。

总结

在C编程语言中读取文件夹中的所有文件名并将它们存储在数组中是一项常见而重要的任务。使用opendirreaddir函数以及适当的逻辑和内存管理,我们可以轻松完成这项任务。