C/C++ Windows, Linux directory and files

char CmdLine[50] = "";
char path[512] = "";
char filename[20] = "";
int Flag = 1;

#ifdef _FOR_WINDOWS_

HANDLE hSrc;
WIN32_FIND_DATA wfd;

sprintf(path, "C:\\project\\ocr\\images\\*.jpg");

// 해당폴더의 첫번째 파일을 wfd에 넣는다
hSrc = FindFirstFile(path, &wfd);
if (hSrc == INVALID_HANDLE_VALUE)
{
    fprintf(stderr, "Can't Find %s.\n", path);
    Flag = 0;
}
while(Flag)
{
    sprintf(filename, "%s", wfd.cFileName);
    // wfd의 다음 파일로 넘어 간다.
    Flag = FindNextFile(hSrc, &wfd);
}
// 파일 핸들 닫기
FindClose(hSrc);
#endif

#ifdef _FOR_LINUX_
// 디렉토리 포인터
DIR* dp = NULL;
struct dirent* entry = NULL;
struct stat buf;
sprintf(path, "./Result");
// 디렉토리 열기
if ( (dp = opendir(path)) == NULL)
{
    Flag = 0;
}
while (Flag)
{
    entry = readdir(dp);
    if (entry == NULL)
    {
        Flag = 0;
    }
    else
    {
        // 파일이름을 알려주어 자세한정보를 buf 에 저장
        lstat(entry->d_name, &buf);

        // 파일이 디렉토리인가?
        if (S_ISDIR(buf.st_mode))
        {
            fprintf(stderr, "%s is Directory.\n", entry->d_name);
        }
        // 파일이 파일인가?
        else if (S_ISREG(buf.st_mode))
        {
            fprintf(stderr, "%s is File.\n", entry->d_name);
            sprintf(CmdLine, "echo %s >> Result.txt", entry->d_name);
            fprintf(stderr, CmdLine);
            system(CmdLine);
        }
    }
}
// 디렉토리 닫기
closedir(dp);
#endif

comments:

댓글 쓰기