한글이 포함된 문자열의 경우에 한글 중간에 끊기지 않도록 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 |