이 블로그 검색

2019년 12월 15일 일요일

c언어에서 한글 조합형 유니코드 출력

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++에서 실행했습니다.

댓글 없음:

댓글 쓰기