다음을 통해 공유


wcstombs_s, _wcstombs_s_l

와이드 문자 시퀀스에 해당 시퀀스의 멀티 바이트 문자로 변환합니다.버전 wcstombs, _wcstombs_l 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.

errno_t wcstombs_s(
   size_t *pReturnValue,
   char *mbstr,
   size_t sizeInBytes,
   const wchar_t *wcstr,
   size_t count 
);
errno_t _wcstombs_s_l(
   size_t *pReturnValue,
   char *mbstr,
   size_t sizeInBytes,
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t wcstombs_s(
   size_t *pReturnValue,
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count 
); // C++ only
template <size_t size>
errno_t _wcstombs_s_l(
   size_t *pReturnValue,
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
); // C++ only

매개 변수

  • [out] pReturnValue
    문자를 변환 합니다.

  • [out] mbstr
    그 결과 대 한 버퍼의 주소는 멀티 바이트 문자 문자열 변환.

  • [in]sizeInBytes
    바이트의 크기는 mbstr 버퍼입니다.

  • [in] wcstr
    변환 하는 와이드 문자열을 가리킵니다.

  • [in] count
    와이드 문자를 저장 하 여 최대 수는 mbstr 버퍼가 null 종결 문자를 포함 하지 않는, 또는 _TRUNCATE.

  • [in] locale
    사용 하는 로캘.

반환 값

연결에 성공 하면 0, 실패 시 오류 코드입니다.

오류 조건

값을 반환 하 고errno

mbstris NULL and sizeInBytes > 0

EINVAL

wcstr가 NULL인 경우

EINVAL

대상 버퍼가 너무 작아 변환 된 문자열을 포함할 수 있습니다 (않는 한 count 입니다 _TRUNCATE. 아래의 설명 부분 참조)

ERANGE

이러한 조건 중 하나라도 발생 하는 경우 잘못 된 매개 변수가 예외에 설명 된 대로 호출 될 매개 변수 유효성 검사 .실행 계속 수 있으면 함수가 오류 코드를 반환 하 고 설정 하는 errno 는 표에 표시 된 대로.

설명

wcstombs_s 함수의 와이드 문자 포인터가 가리키는 문자열 변환 wcstr 가 가리키는 버퍼에 저장 된 멀티 바이트 문자에 mbstr.이러한 조건 중 하나가 만족 될 때까지 각 문자에 대 한 변환을 계속 합니다.

  • 와이드 null 문자를 발견 했습니다.

  • 와이드 문자를 변환할 수 없습니다 발생 하는

  • 저장 된 바이트는 mbstr equals를 버퍼링 count.

항상 대상 문자열은 null로 끝나는 (오류 경우에)입니다.

경우 count 특수 값인 _TRUNCATE, 다음 wcstombs_s 여전히 그대로 두고 공간에 null 종결자에 대 한 대상 버퍼에 맞게 최대한 will 문자열로 변환 합니다.

경우 wcstombs_s 성공적으로 원본 문자열 변환 크기 (바이트)에 null 종결자를 포함 하 여 변환 된 문자열을 배치 *pReturnValue (제공 pReturnValue 수 없습니다 NULL).이런 경우에는 mbstr 인수가 NULL 및 필요한 버퍼 크기를 결정할 수 있습니다.Note that if mbstr is NULL, count is ignored.

경우 wcstombs_s 와이드 문자는 멀티 바이트 문자를 변환할 수 없습니다. 발생 한 0 배치 *pReturnValue, 빈 문자열로 설정 하는 대상 버퍼, 설정 errno 에 EILSEQ를 반환 하 고 EILSEQ.

시퀀스 가리키는 경우 wcstr 및 mbstr 겹치는 동작을 wcstombs_s 는 정의 되지 않습니다.

보안 정보보안 정보

확인 wcstr 및 mbstr 서로 중첩 되지 않습니다 및 count 올바르게 변환 하려면 와이드 문자 수를 반영 합니다.

wcstombs_s현재 로케일에 대 한 모든 로캘 종속 동작을 사용합니다. _wcstombs_s_l동일 wcstombs 대신 전달 된 로캘을 사용 하는 점을 제외 하 고.자세한 내용은 로캘를 참조하십시오.

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

요구 사항

루틴

필수 헤더

wcstombs_s

<stdlib.h>

추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

이 프로그램의 동작을 보여 줍니다 있는 wcstombs_s 함수입니다.

// crt_wcstombs_s.c
// This example converts a wide character
// string to a multibyte character string.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#define BUFFER_SIZE 100

int main( void )
{
    size_t   i;
    char      *pMBBuffer = (char *)malloc( BUFFER_SIZE );
    wchar_t*pWCBuffer = L"Hello, world.";

    printf( "Convert wide-character string:\n" );

    // Conversion
    wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE, 
               pWCBuffer, (size_t)BUFFER_SIZE );

    // Output
    printf("   Characters converted: %u\n", i);
    printf("    Multibyte character: %s\n\n",
     pMBBuffer );

    // Free multibyte character buffer
    if (pMBBuffer)
    {
    free(pMBBuffer);
    }
}
  

해당 .NET Framework 항목

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

참고 항목

참조

데이터 변환

로캘

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wctomb_s, _wctomb_s_l

WideCharToMultiByte