관리 메뉴

(코딩캣) = "코딩"하는 고양이;

FindFirstFile, FindNextFile, FindClose 예제 본문

자작 프로그램

FindFirstFile, FindNextFile, FindClose 예제

컴파일러님, 이 코드는 고양이발로 작성되었습니다. 코딩집사 2011.02.28 18:24
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <locale.h>
void main()
{
    TCHAR szTemp[512]; // 임시 버퍼
    TCHAR szPathBuffer[MAX_PATH]; // 사용자로부터 입력
    TCHAR szPathPattern[MAX_PATH]; // 검색 패턴
    DWORD i; // 인덱스 변수
    HANDLE hItem; // 검색 핸들
    WIN32_FIND_DATA findData; // 파일 정보
    setlocale(LC_ALL, ".949");
    _tprintf(TEXT("디렉터리 경로를 입력해 주세요. (입력 예: C: 또는 C:\\My Documents)\n\r"));
    _tprintf(TEXT("입력 >> "));
#if defined(_UNICODE) || defined(UNICODE) // 유니코드면?
    _tscanf(TEXT("%ws"), szPathBuffer); 
    _stprintf(szPathPattern, TEXT("%ws\\*"), szPathBuffer);
#else // SBCS면?
    _tscanf(TEXT("%s"), szPathBuffer);
    _stprintf(szPathPattern, TEXT("%s\\*"), szPathBuffer);
#endif
#if defined(_UNICODE) || defined(UNICODE)
    _tprintf(TEXT("검색 패턴: %ws\n\r"), szPathPattern);
#else
    _tprintf(TEXT("검색 패턴: %s\n\r"), szPathPattern);
#endif
    i = 0;
    hItem = FindFirstFile(szPathPattern, &findData);
    if(hItem == INVALID_HANDLE_VALUE)
    {
        _tscanf(TEXT("오류 났어요\n\r"));
        return;
    }
    do
    {
        i++;
        if((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) // 디렉터리면?
        {
            // 이름을 대괄호로 감싸서 출력
#if defined(_UNICODE) || defined(UNICODE)
            _stprintf(szTemp, TEXT("[%ws]"), findData.cFileName);
            _tprintf(TEXT("%30ws"), szTemp);
#else
            _stprintf(szTemp, TEXT("[%s]"), findData.cFileName);
            _tprintf(TEXT("%30s"), szTemp);
#endif
        }
        else
        {
            // 파일이면 그냥 이름 출력
#if defined(_UNICODE) || defined(UNICODE)
            _stprintf(szTemp, TEXT("%ws"), findData.cFileName);
            _tprintf(TEXT("%30ws"), szTemp);
#else
            _stprintf(szTemp, TEXT("%s"), findData.cFileName);
            _tprintf(TEXT("%30s"), szTemp);
#endif
        }
        
        if(i % 2 == 0) _tprintf(TEXT("\n\r"));
    } while(FindNextFile(hItem, &findData));
    FindClose(hItem);
    _tprintf(TEXT("\n\r"));
    _tprintf(TEXT("끝.\n\r"));
    _getch();
}

0 Comments
댓글쓰기 폼