한글이 포함된 문자열의 경우에 한글 중간에 끊기지 않도록 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;
}
반응형
'Dev > C, C++' 카테고리의 다른 글
| core 파일이 생성되는 한가지 상황 (1) | 2011.10.31 |
|---|---|
| Pro*C/C++ Precompiler Programmer's Guide (0) | 2009.03.13 |
| DisplayHex (0) | 2008.11.13 |
| Oracle 에러코드 (1) | 2008.07.08 |
| c ini 읽는 모듈.. (2) | 2008.04.30 |