언어 자료구조 알고리즘/C언어 예제

한글 초성 알아내기

언제나휴일 2009. 8. 19. 05:47
반응형

한글 초성 알아내기

원리는 다음과 같습니다. (지식iN질문 답변하다가 만들어 봤습니다.) 

 

입력 문자열이 "가"보다 크거나 같고 "나"보다 작으면 초성은 "ㄱ"

입력 문자열이 "나"보다 크거나 같고 "나"보다 작으면 초성은 "ㄴ"

입력 문자열이 "다"보다 크거나 같고 "나"보다 작으면 초성은 "ㄷ"

...중략합니다...
 

참고로 한글의 마지막 글자는 힣 인데 C언어에 등록된 마지막 한글은 힛 입니다.

억울할 따름이죠. 

#include <string.h>

const char *GetInitialSound(const char *han_src)
{
    const char *isarr[14] =
    {"ㄱ","ㄴ","ㄷ","ㄹ","ㅁ","ㅂ","ㅅ",
     "ㅇ","ㅈ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"};
    const char *isarr2[14] =
    {     "가","나","다","라","마","바","사","아","자","차","카","타","파","하"    };

    int index = 0; 
    for(index=0;index<13;index++)
    {
        if((strcmp(isarr2[index],han_src) <=0) && (strcmp(isarr2[index+1],han_src) >0))
       {
           return isarr[index];
       }
    }

    if((strcmp(isarr2[index],han_src) <=0) && (strcmp("힛",han_src) >=0))
    {//참고로 C언어에 등록된 한글의 마지막 글자는 "힛"입니다. -억울하네요
        return isarr[index];
    }
    return "입력 문자열이 한글이 아니네요";
}


#include <stdio.h>
int main()
{
 
    printf("%s\n",GetInitialSound("네이버"));
    printf("%s\n",GetInitialSound("하길동"));
    printf("%s\n",GetInitialSound("강감찬"));
    printf("%s\n",GetInitialSound("사이버"));
    printf("%s\n",GetInitialSound("장길산"));
    printf("%s\n",GetInitialSound("abc"));
    printf("%s\n",GetInitialSound("을지문덕"));
    return 0;

}

 

반응형