C언어에서 한글 조합형 유니코드 출력
C언어에서 한글 조합형 유니코드 출력
#include <locale.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, "Korean");
int in_char, in_cho, in_jung, in_jong;
printf("Input a letter : ");
do {
wscanf(L"%c", &in_char);
} while ( in_char < 0xAC00 || in_char > 0xD7A3);
// 초`중`종성 분해
in_char = in_char - 0xAC00;
in_cho = in_char / (21 * 28);
in_jung = (in_char / 28) % 21;
in_jong = in_char % 28;
// 초`중`종성 print
if ( in_jong == 0 )
wprintf(L"%c => %c + %c\n", in_char + 0xAC00, in_cho + 0x1100, in_jung + 0x1161);
else
wprintf(L"%c => %c + %c + %c\n", in_char + 0xAC00, in_cho + 0x1100, in_jung + 0x1161, in_jong + 0x11A7);
}
>> run
Input a letter : 가
가 => ㄱ + ㅏ
>> run
Input a letter : 힣
힣 => ㅎ + ㅣ + ㅎ
저도 한글 유니코드에 대해서 잘 알지는 못하지만
위의 프로그램으로 한글 한 글자를 입력받아 초`중`종성으로 분해할 수 있습니다.
분해된 in_cho, in_jung, in_jong에 각각 해당하는 알파벳을 연결시키면
원하는 결과를 얻을 수 있을 것 같습니다.
Dev-C++에서 실행했습니다.
댓글 없음:
댓글 쓰기