Share via


vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l

인수 목록에 대 한 포인터를 사용 하 여 형식이 지정 된 출력을 작성 합니다.이러한 함수를 더 안전한 버전을 사용할 수 있습니다. see vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l.

int vsnprintf(
   char *buffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf(
   char *buffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf_l(
   char *buffer,
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
);
int _vsnwprintf(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   va_list argptr 
);
int _vsnwprintf_l(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsnprintf(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnprintf(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnprintf_l(
   char (&buffer)[size],
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf_l(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
); // C++ only

매개 변수

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

  • count
    최대 문자 수를 쓸 수 있습니다.

  • format
    형식 사양입니다.

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

  • locale
    사용 하는 로캘.

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

반환 값

vsnprintf_vsnprintf, 및 _vsnwprintf 쓸 문자 개수 보다 작거나 인지 쓴 문자 수를 반환 합니다. count. 쓸 문자 수 보다 큰 경우 count, 이러한 기능을 출력 잘렸습니다 나타내는-1을 반환 합니다.하나 작성 된 경우 종료 null 반환 값은 포함 되지 않습니다.

경우 buffer 또는 format 입니다 NULL, count가 0 보다 작거나 경우 이러한 함수는 잘못 된 매개 변수 처리기의 설명에 따라 호출 하거나 매개 변수 유효성 검사.이 함수 실행을 계속 수 있으면-1을 반환 합니다. 설정 하 고 errno 에 EINVAL.

설명

각이 함수는 인수 목록에 대 한 포인터를 사용 하 고 데이터의 형식이 지정 및 최대 기록 count 에 문자 메모리를 가리키는 의해 buffer.마지막에 공간이 있는 경우 (즉, 문자를 쓸 수 있는 경우 보다 count), 버퍼가 null로 종료 됩니다.

보안 정보보안 정보

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

[!참고]

룸에 대 한 종료 null 인지 확인 하려면 수 count 버퍼 길이 보다 엄격 하 게 덜이 고 버퍼가 함수를 호출 하기 전에 null로 초기화 합니다.

vsnprintf동일 _vsnprintf.vsnprintfANSI 표준 준수에 대 한 포함 되어 있습니다. _vnsprintf이전 버전과 호환성을 위해 유지 됩니다.

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

C + +에서이 함수는 최신, 보안 상응 하는 이러한 함수를 호출 하는 템플릿 오버 로드 되어 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

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

_Mbcs가 정의

_Unicode가 정의

_vsntprintf

_vsnprintf

_vsnprintf

_vsnwprintf

_vsntprintf_l

_vsnprintf_l

_vsnprintf_l

_vsnwprintf_l

요구 사항

루틴

필수 헤더

선택적 헤더

vsnprintf

<stdio.h> 및 <stdarg.h>

<varargs.h> *

_vsnprintf, _vsnprintf_l

<stdio.h> 및 <stdarg.h>

<varargs.h> *

_vsnwprintf, _vsnwprintf_l

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

<varargs.h> *

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

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

예제

// crt_vsnprintf.cpp
// compile with: /W3
#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( buff, sizeof(buff) - 1, formatstring, args); // C4996
// Note: vsnprintf is deprecated; consider vsnprintf_s instead
   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!!");
}
  
  

해당 .NET Framework 항목

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

참고 항목

참조

스트림 I/O

vprintf 함수

형식 사양 구문: printf 및 wprintf 함수

않는다면, _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