|
#include <windows.h> #include <stdio.h> #include <iostream.h> #include <string.h> #include <stdlib.h> #include <stddef.h> #define code -44032 // 문자 코드에서 "가"를 처음으로 놓기 위한 값 char *ChoSungTable[] = {"ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"}; char *JungSungTable[] = {"ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ"}; char *JongSungTable[] = {"", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"}; int HanDivPas(const char* sHanGeul, char* ChoSung, char* JungSung, char* JongSung); int HanAssPas(const char* ChoSung, const char* JungSung, const char* JongSung, char* sHanGeul); int main(int argc, char* argv[]){ char cho[10], jung[10], jong[10], han[10]; HanDivPas("똚", cho, jung, jong); printf ("%s, %s, %s", cho, jung, jong); HanAssPas("ㄸ","ㅗ","ㄻ", han); return 0; } int HanDivPas(const char* sHanGeul, char* ChoSung, char* JungSung, char* JongSung) { int iChoSung, iJungSung, iJongSung; int iCode; WCHAR buffer[100]; MultiByteToWideChar(CP_ACP, 0, sHanGeul, strlen(sHanGeul), buffer, 100); iCode = (int)buffer[0]; iCode = iCode + code; if (iCode < 0) { return -1; } iChoSung = (int)(iCode/(21*28)); iCode = (int)(iCode % (21*28)); iJungSung = (int)(iCode/28); iJongSung = (int)(iCode % 28); strcpy(ChoSung, ChoSungTable[iChoSung]); strcpy(JungSung, JungSungTable[iJungSung]); strcpy(JongSung, JongSungTable[iJongSung]); return 0; } int HanAssPas(const char* ChoSung, const char* JungSung, const char* JongSung, char* sHanGeul) { int iChoSung, iJungSung, iJongSung, iHan; int iIndx; for(iIndx =0; iIndx<19; iIndx++){ if (ChoSung == ChoSungTable[iIndx]) { iChoSung = iIndx; break; } } for(iIndx=0; iIndx<21; iIndx++){ if (JungSung == JungSungTable[iIndx]) { iJungSung = iIndx; break; } } for(iIndx=0; iIndx<21; iIndx++){ if (JongSung == JongSungTable[iIndx]) { iJongSung = iIndx; break; } } iHan = ((iChoSung * 21 + iJungSung) * 28 + iJongSung - code); WCHAR pcTemp[10]; pcTemp[0] = (WCHAR)iHan; pcTemp[1] = "\0"; WideCharToMultiByte(CP_ACP, 0, pcTemp, strlen((char*)pcTemp), sHanGeul, strlen(sHanGeul), NULL, NULL); printf("%s", sHanGeul); return 0; } |
|
댓글을 달아 주세요