다음을 통해 공유


vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l

인수 목록에 대 한 포인터를 사용 하 여 형식이 지정 된 출력을 작성 합니다.이러한 버전의 있습니다 vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.

int vsnprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf_s_l(
   char *buffer,
   size_t sizeOfBuffer,
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
);
int _vsnwprintf_s(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   size_t count,
   const wchar_t *format,
   va_list argptr 
);
int _vsnwprintf_s_l(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int _vsnprintf_s(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf_s(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   va_list argptr 
); // C++ only

매개 변수

  • buffer
    출력에 대 한 저장소 위치입니다.

  • sizeOfBuffer
    크기는 buffer 출력 바이트에 대 한.

  • count
    최대 수 (종료 null 포함)를 작성 하는 자 또는 _TRUNCATE.

  • format
    형식 사양입니다.

  • argptr
    인수 목록에 대 한 포인터입니다.

  • locale
    사용 하는 로캘.

자세한 내용은 형식 사양을.

반환 값

vsnprintf_s_vsnprintf_s 및 _vsnwprintf_s 출력 오류가 발생 하는 경우 종료 null 값 또는 음수 값 제외한 쓴 문자 수를 반환 합니다.vsnprintf_s동일 _vsnprintf_s.vsnprintf_sANSI 표준 준수에 대 한 포함 되어 있습니다._vnsprintf이전 버전과 호환성을 위해 유지 됩니다.

와 종료 null 데이터를 저장 하는 데 필요한 저장 공간을 초과 하는 경우 sizeOfBuffer의 설명에 따라 잘못 된 매개 변수 처리기가 호출 매개 변수 유효성 검사하지 않는 한, count 입니다 _TRUNCATE, 경우에 많은 문자열 그대로 됩니다 맞추기 buffer 작성 하 고-1이 반환.잘못 된 매개 변수 처리기 한 후 실행을 계속 하는 경우 이러한 함수를 설정 buffer 를 빈 문자열로 설정 errno 에 ERANGE, 및-1을 반환 합니다.

경우 buffer 또는 format 되는 NULL 포인터를 경우 count 가 보다 작거나 0으로 잘못 된 매개 변수 처리기를 호출 합니다.실행을 계속 수 있으면 이러한 함수를 설정 errno 에 EINVAL 및-1을 반환 합니다.

오류 조건

Condition

Return

errno

buffer입니다 NULL

-1

EINVAL

format입니다 NULL

-1

EINVAL

count< = 0

-1

EINVAL

sizeOfBuffertoo small (and count != _TRUNCATE)

-1 (와 buffer 를 빈 문자열로 설정)

ERANGE

설명

각이 함수 인수 목록에 대 한 포인터를 사용 하 고 서식을 설정 하는 및 최대 기록 count 에 문자 메모리에 지정 된 데이터를 가리키는 의해 buffer 종료 null을 추가 합니다.

경우 count 입니다 _TRUNCATE, 이러한 함수는 문자열에 들어갈 수 있을 만큼의 많은 작성 후 buffer 종료 null에 대 한 공간을 유지 하는 동안.전체 문자열 (종료 null)에 적합 한지를 하는 경우 buffer, 이러한 함수 (종료 null 포함) 작성 하 고 문자 수를 반환 하 고 그렇지 않으면 이러한 함수는 잘렸습니다 나타내기 위해-1을 반환 합니다.

버전으로 이러한 함수는 _l 접미사는 현재 스레드의 로캘 대신 전달 된 로캘 매개 변수를 사용할 경우를 제외 하 고 동일 합니다.

보안 정보보안 정보

확인 format 사용자 정의 문자열이 아닙니다.자세한 내용은 버퍼 오버런 방지.

[!참고]

룸에 대 한 종료 null 인지 확인 하려면 수 count 버퍼 길이 나 사용 보다 엄격 하 게 덜 수 _TRUNCATE.

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

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

_UNICODE 및 _Mbcs가 정의 되지 않았습니다.

_Mbcs가 정의

_Unicode가 정의

_vsntprintf_s

_vsnprintf_s

_vsnprintf_s

_vsnwprintf_s

_vsntprintf_s_l

_vsnprintf_s_l

_vsnprintf_s_l

_vsnwprintf_s_l

해당 .NET Framework 항목

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

요구 사항

루틴

필수 헤더

선택적 헤더

vsnprintf_s

<stdio.h> 및 <stdarg.h>

<varargs.h> *

_vsnprintf_s, _vsnprintf_s_l

<stdio.h> 및 <stdarg.h>

<varargs.h> *

_vsnwprintf_s, _vsnwprintf_s_l

<stdio.h> 또는 <wchar.h> 및 <stdarg.h>

<varargs.h> *

* V UNIX 호환성을 위해 필요 합니다.

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

예제

// crt_vsnprintf_s.cpp
#include <stdio.h>
#include <wtypes.h>

void FormatOutput(LPCSTR formatstring, ...) 
{
   int nSize = 0;
   char buff[10];
   memset(buff, 0, sizeof(buff));
   va_list args;
   va_start(args, formatstring);
   nSize = vsnprintf_s( buff, sizeof(buff), _TRUNCATE, formatstring, args);
   printf("nSize: %d, buff: %s\n", nSize, buff);
}

int main() {
   FormatOutput("%s %s", "Hi", "there");
   FormatOutput("%s %s", "Hi", "there!");
   FormatOutput("%s %s", "Hi", "there!!");
}
  
  

참고 항목

참조

스트림 I/O

vprintf 함수

않는다면, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_start, va_end, va_arg