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; }
반응형