C/C++获取目录下的文件列表信息


在C或C++中,获取目录下的文件列表信息通常需要依赖操作系统提供的API或库函数。下面我将给出一个在类Unix系统(如Linux或macOS)中使用POSIX API(如`opendir`、`readdir`等)和Windows系统中使用``头文件中函数的示例。

### 对于类Unix系统(如Linux或macOS)


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

void listFiles(const char *dirPath) {
    DIR *dir;
    struct dirent *entry;

    if ((dir = opendir(dirPath)) == NULL) {
        perror("opendir() error");
        return;
    }

    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    closedir(dir);
}

int main() {
    const char *dirPath = "./"; // 修改为你想列出文件的目录
    listFiles(dirPath);
    return 0;
}

### 对于Windows系统


#include <windows.h>
#include <stdio.h>

void listFiles(const char *dirPath) {
    WIN32_FIND_DATA findData;
    HANDLE hFind = FindFirstFile(dirPath, &findData);

    if (hFind == INVALID_HANDLE_VALUE) {
        printf("Failed to list files: %ld\n", GetLastError());
        return;
    }

    do {
        if (strcmp(findData.cFileName, ".") != 0 && strcmp(findData.cFileName, "..") != 0) {
            printf("%s\n", findData.cFileName);
        }
    } while (FindNextFile(hFind, &findData) != 0);

    FindClose(hFind);
}

int main() {
    const char *dirPath = "C:\\*"; // 修改为你想列出文件的目录,注意通配符
    // 注意:在Windows中使用时,需要正确处理路径分隔符(\)和转义字符
    // 这里的C:\\*可能需要根据实际情况修改,比如"C:\\某文件夹\\*"
    listFiles(dirPath);
    return 0;
}

注意:

- 类Unix系统的示例使用了`opendir`和`readdir`函数来遍历目录。

- Windows系统的示例使用了`FindFirstFile`和`FindNextFile`函数,并且需要注意路径分隔符和转义字符的问题。

- 请根据实际情况修改目录路径和通配符等参数。

- 示例中的`listFiles`函数可以根据需要修改为更适合您项目的函数名或进行进一步的封装。