728x90
반응형
FindFirstFileA를 사용한 MBCS 문자열 탐지
표준 C프로그래밍과 Window 프로그래밍을 섞어서 사용할때 발생하는 디렉토링 리스팅 해결 방법
FindFirstFileA 를 사용하면 char형 배열로 찾아쓸수 있다. FindFirstFileW 또는 FindFirstFile 를 사용시 Unicode로 되기때문에 사용할수 없다.
int Check_File_Name(const char *sDir)
{
WIN32_FIND_DATA fdFile;
HANDLE hFind = NULL;
char sPath[2048];
char fine_name[2048];
//Specify a file mask. *.* = We want everything!
memset(sPath, '\0', sizeof(sPath));
strncpy(sPath, "D:\\VM\\*.*", strlen("D:\\VM\\*.*"));
if ((hFind = FindFirstFileA(sPath, &fdFile)) == INVALID_HANDLE_VALUE)
{
printf("Path not found: [%s]\n", sPath);
return RET_FAIL;
}
do
{
//Find first file will always return "."
// and ".." as the first two directories.
if (strcmp(fdFile.cFileName, ".") != 0
&& strcmp(fdFile.cFileName, "..") != 0)
{
//Is the entity a File or Folder?
if (fdFile.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)
{
printf("Directory: %s\n", sPath);
continue;
}
else{
wprintf(L"File: %s \n", fdFile.cFileName);
int len = WideCharToMultiByte(CP_ACP, 0, fdFile.cFileName, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, fdFile.cFileName, -1, fine_name, len, NULL, NULL);
fprintf(stderr, "File: %s \n", fine_name);
break;
}
}
} while (FindNextFile(hFind, &fdFile)); //Find the next file.
FindClose(hFind); //Always, Always, clean things up!
return RET_OK;
}
728x90
반응형
'프로그래밍 > 윈도우 프로그래밍' 카테고리의 다른 글
[윈도우] window 프로그래밍 한글 처리 c++ (0) | 2019.09.29 |
---|---|
[Window10] 이 앱은 사용자 보호를 위해 차단되었습니다 (우회 방법) (16) | 2018.09.05 |
chrome(크롬) : 안전한 연결 설정중 해결 방법 (55) | 2018.08.08 |
[윈도우] window 프로그래밍에서 표준 C/C++를 동시에 하용할 시 발생하는 문자열 문제점 해결 (0) | 2017.02.02 |
[윈도우] 문자열의 Encoding 방식 (0) | 2017.02.02 |