c - 在 Windows 上获取 c 目录中的每个文件

标签 c windows linux io readdir

我目前正在开发一个 C 项目,我需要扫描一个目录并获取该目录中每个文件的文件名。该代码需要在 Windows 和 Linux 上运行。我有使用以下代码的linux版本。

DIR *dp;
int i = 0;
struct dirent *ep;
char logPath[FILE_PATH_BUF_LEN];
sprintf(logPath, "%s/logs/", logRotateConfiguration->logFileDir);
printf("Checking pre existing log count in: %s\n", logPath);
dp = opendir(logPath);

if (dp != NULL)
{
    while ((ep = readdir(dp)) != NULL)
    {
        if (strcmp(ep->d_name, ".") != 0 && strcmp(ep->d_name, "..") != 0)
        {
            i = i + 1;
        }
    }
    closedir(dp);
}
else
{
    perror("Couldn't open directory");
}
logRotateConfiguration->logCount = i;

为了使此代码正常工作,我使用 #include <dirent.h>但发现这与 Windows 不兼容。因此,在我的头文件中,我使用了 ifdef 来包含 dirent.h if 在 Linux 上,但不确定在 Windows 上我可以使用它。

感谢您提供的任何帮助。

最佳答案

要列出 Windows 上的文件,您可以使用 FindFirstFile()FindNextFile() 。有关示例,请参阅 Listing the Files in a Directory .

关于c - 在 Windows 上获取 c 目录中的每个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12913788/

相关文章:

windows - 是否可以使用 Visual Studio 11 模拟器的多个实例来调试多人 Metro 应用程序?

java - Hadoop 2.7.2 HA群集无法启动备用名称节点

windows - TPageControl 获取索引

linux - 为什么 ffmpeg -rtsp_transport tcp -i 无法复制 service_provider : Harmonic? 的 rtsp 流

c++ - 是否可以在不使用 SIGHUP 的情况下立即启动 pthread?

c - 我无法运行 ELF 格式的程序。shell 告诉我没有这样的文件或目录

c - 在 for 循环内打印时未声明标识符,尽管标识符似乎已明确说明

c - C中的内存分配

c - 了解字节顺序和函数,如 CFSwapInt32HostToBig

c - OpenGL:指定 UV 坐标时如何避免舍入错误