본문 바로가기

C-Language/mbstowcs(), wcstombs()

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);
 
}