Dev/C, C++
한글이 포함된 문자열을 특정 byte로 자르기
newtype
2009. 2. 16. 09:09
한글이 포함된 문자열의 경우에 한글 중간에 끊기지 않도록 left 함수를 구현 했다.
유니코드 한글을 구분하기 위해서는 메크로 함수를 수정해 주어야 한다.
#include <stdio.h>
#define IsHangle(c) ((unsigned char)(c) > 0x7f)
char* left(char* sz, int len)
{
int i = 0;
if ( strlen(sz) <= len ) return sz;
for (i=0; i<len; i++)
{
if ( IsHangle(sz[i]) )
{
if ( len-1 < i+1 ) break;
else i++;
}
}
sz[i] = 0;
return sz;
};
int main()
{
char *szOrg="11가핳a안녕하세요abcdef우하하1";
char buf[256]="";
int i;
printf("Org: %s(%d)\n", szOrg, strlen(szOrg) );
for(i=0; i<=strlen(szOrg); i++)
{
strcpy( buf, szOrg );
printf( "%02d, %s\n", i, left(buf, i) );
}
return 0;
}
반응형