現在、ディレクトリをスキャンし、そのディレクトリ内の各ファイルのファイル名を取得する必要がある 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 と互換性がないことがわかりました。したがって、私のヘッダー ファイルでは、Linux の場合は ifdef を使用して dirent.h をインクルードしましたが、Windows の場合は何を使用できるかわかりません。
ご協力いただきありがとうございます。