다음을 통해 공유


wcrtomb_s

와이드 문자는 멀티 바이트 문자 표현으로 변환 합니다.버전 wcrtomb 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.

errno_t wcrtomb_s(
   size_t *pReturnValue,
   char *mbchar,
   size_t sizeOfmbchar,
   wchar_t *wchar,
   mbstate_t *mbstate
);
template <size_t size>
errno_t wcrtomb_s(
   size_t *pReturnValue,
   char (&mbchar)[size],
   wchar_t *wchar,
   mbstate_t *mbstate
); // C++ only

매개 변수

  • [out] pReturnValue
    오류가 발생 한 경우 작성 된 바이트 수 또는-1을 반환 합니다.

  • [out] mbchar
    결과 멀티 바이트 문자를 변환 합니다.

  • [in] sizeOfmbchar
    크기는 mbchar 변수 (바이트)에서입니다.

  • [in] wchar
    변환 와이드 문자입니다.

  • [in] mbstate
    에 대 한 포인터를 mbstate_t 개체입니다.

반환 값

0이 반환 나는 errno 에 오류가 발생 하면 값입니다.

설명

wcrtomb_s 함수 변환에 포함 된 지정 된 변환 상태에서부터 와이드 mbstate, 포함 된 값을 wchar, 표시 된 주소에 mbchar.pReturnValue 바이트 변환, 하지만 no의 수는 값은 두 개 이상의 MB_CUR_MAX 바이트 또는 오류가 발생 한 경우에-1입니다.

경우 mbstate null이 내부 mbstate_t 상태 변환이 사용 됩니다.문자가 포함 된 경우 wchar 해당 멀티 바이트 문자 값을 포함 하지 않은 pReturnValue -1 서 함수 반환 합니다는 errno 값이 EILSEQ.

wcrtomb_s 다른 함수에서 wctomb_s, _wctomb_s_l 를 재시작 하면 됩니다.변환 상태 저장 됩니다 mbstate 같은 또는 다른 다시 시작 함수 호출에 대 한.혼합 가지가 함수를 사용 하는 경우 결과가 정의 되지 않습니다.예를 들어, 응용 프로그램 사용 wcsrlen 대신 wcslen에 대 한 이후의 호출 하는 경우, wcsrtombs_s 대신 사용 된wcstombs_s.

C + +에서이 함수를 사용 하 여 템플릿 오버 로드에 의해 단순화 됩니다. 오버 로드에서 버퍼 길이가 자동으로 유추할 수 있습니다 (size 인수를 지정할 필요가 없습니다) 및 해당 보안에서 이미지와 이전, 안전 하지 않은 함수가 자동으로 바꿀 수 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.

예외

wcrtomb_s 함수는 다중 스레드 안전 수 없습니다 현재 스레드에서 함수를 호출 하는 경우 setlocale 이 함수를 실행 하는 동안 하는 mbstate null입니다.

예제

// crt_wcrtomb_s.c
// This program converts a wide character
// to its corresponding multibyte character.
//

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    errno_t     returnValue;
    size_t      pReturnValue;
    mbstate_t   mbstate;
    size_t      sizeOfmbStr = 1;
    char        mbchar = 0;
    wchar_t*    wchar = L"Q\0";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    returnValue = wcrtomb_s(&pReturnValue, &mbchar, sizeof(char),
                            *wchar, &mbstate);
    if (returnValue == 0) {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wchar);
        printf(" was converted to a the \"%c\" ", mbchar);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
  

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.

요구 사항

루틴

필수 헤더

wcrtomb_s

<wchar.h>

참고 항목

참조

데이터 변환

로캘

멀티 바이트 문자 시퀀스로 해석

mbsinit