mbstowcs(), wcstombs() 한글 사용
mbstowcs(), wcstombs() 예제
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>
/* MBCS(Multi Byte Character System)
* WBCS(Wide Byte Character System)
* MBCS문자열은 문자열 중에 영문은 1바이트, 한글등은 2바이트로 저장함
* WBCS문자열은 모든 문자를 2바이트(Unicode)로 저장함
* MBCS, WBCS상호 변환가능
* mbstowcs(wchar_t *dest, const char *src, size_t maxCount)
* wcstombs(char *dest, const wchar_t *src, size_t maxCount)
*/
int main(void) {
char *mbs = "한글과 Elglish 혼용";
wchar_t wcsarr[36];
char chr[36];
setlocale(LC_ALL, "korean");
printf("mblen(mbs,strlen(mbs))=%d \n", mblen(mbs,strlen(mbs)));
/* mbcs(multi byte character system) 문자열을 wbcs(wide byte character system)으로 변환 */
if(mblen(mbs, strlen(mbs))==2) { // 문자열 중에 2바이트 문자(한글)가 있다면 2를 리턴함
mbstowcs(wcsarr, mbs, strlen(mbs)); // mbcs문자열을 지정한 바이트 수만큼 wbcs문자열로 변환
wprintf(L"%s \n", wcsarr); // wbcs문자열 출력
}
// wbcs문자열을 지정한 바이트 수만큼 mbcs 문자열로 변환
wcstombs(chr,wcsarr, sizeof(wcsarr));
printf("%s \n", chr);
}
'Programming > C/C++' 카테고리의 다른 글
[C/C++] Boolean type 사용하기 (0) | 2012.10.07 |
---|---|
C(C++아님)에서 bool, Boolean 사용 (0) | 2012.10.07 |
데이터(Data), 힙(Heap), 스택(Stack) 영역 (0) | 2012.06.27 |
빅 엔디안(Big Endian) 과 리틀 엔디안(Little Endian) (0) | 2012.06.25 |
메모리 공간의 이해 (0) | 2012.06.25 |