#include <stdio.h>
void main()
{
char buf[20] = { "한aa글한" };
char font[25][94][2];
int no,page;
/*
한
buf[0] = -19
buf[1] = -107
buf[2] = -100
글
buf[3] = -22
buf[4] = -72
buf[5] = -128
한
buf[6] = -19
buf[7] = -107
buf[8] = -100
buf[max-0]) = -100
buf[max-1]) = -107
buf[max-2]) = -19
buf[max-3]) = -128
buf[max-4]) = -72
buf[max-5]) = -22
buf[max-6]) = -100
buf[max-7]) = -107
buf[max-8]) = -19
*/
int i=0;
//len : 문자열 전체의 길이 5
int len = strlen(buf);
printf("len : %d\n", len);
//max : 문자열 전체의 길이가 들어갈 수 있는 버퍼에 위치
//buf[5] = 0 이므로. buf[5-1] == buf[4]에 값을 얻기위해서. 문자열 전체의 길이 5에서 -1을 뺀다.
//버퍼의 최고 위치 len-1로 max 값을 사용한다. -1이 번거로우니까..
int max = len-1;
//문자값 확인
for(i=0; i<len; i++)
{
//AC00—D7A3
if( (0xAC00 <= buf[i] << 8 | buf[i+1]) && (buf[i] << 8 | buf[i+1] <= 0xD7A3) )
{
printf("AC00—D7A3 buf[%d] = %d\n", i, buf[i]);
}
}
for(page=0;page<25;page++) // 한글 완성형 코드 만들기
{
for(no=0;no<94;no++)
{
font[page][no][0]=page+0xb0;
font[page][no][1]=no +0xa1;
}
}
for(i=0;i<2350;i++) // 한글 완성형 한글 표시 하기
{
printf("%c%c ",font[0][i][0],font[0][i][1]);
}
for(i=0;i<2350;i++) // 한글 완성형 HEX코드 표시 하기
{
printf("%x%x ",font[0][i][0],font[0][i][1]);
}
//문자값 확인
for(i=0; i<len; i++)
{
printf("buf[max-%d]) = %d\n", i, buf[max-i]);
}
//문자의 중간 찾기 (영문만 가능... 한글은 2 byte)
int mid = len / 2;
//만약. mid 가 나머지가 있으면
int remaind = len % 2;
printf("remaind = %d\n", remaind);
if(remaind == 1)
{
//더하기 1
mid = mid + 1;
}
printf("mid = %d\n", mid);
printf("\n");
printf("\n");
printf("\n");
//
int count = 0;
for(i=0; i<mid; i++)
{
printf("buf[%d] = %d\t\t\t", i, buf[i]);
printf("buf[%d] = %d\n", max-i, buf[max-i]);
if(buf[i] == buf[max-i])
{
count++;
printf("count ++\n");
}
}
if( count == mid )
{
printf("회문이다.");
}
else
{
printf("회문이 아니다.");
}
}