다음을 통해 공유


vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l

인수 목록에 대한 포인터를 사용하여 서식이 지정된 출력을 작성합니다. 이러한 기능의 더 안전한 버전을 사용할 수 있습니다. 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
    사용할 로캘입니다.

자세한 내용은 형식 사양을 참조하십시오.

반환 값

만일 쓰여질 문자의 수가 count와 같거나 더 적으면, vsnprintf,_vsnprintf, 및 _vsnwprintf 는 쓰여진 문자의 수를 반환하고, 쓰여질 문자의 수가 count 보다 크면, 이 함수는 출력이 잘려졌다는 것을 나타내는 -1을 반환합니다. 이것이 쓰여진 경우, 이 반환값은 종료 null을 포함하지 않습니다.

만일 buffer 또는 format 이 NULL 이거나 count가 0이하인 경우, 이 함수는 매개 변수 유효성 검사 에서처럼 잘못된 매개변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 -1을 반환하고 errno를 EINVAL로 설정합니다.

설명

이러한 각각의 함수들은 매개변수 목록에 대한 포인터를 가지며, buffer 로 지정된 메모리에 count 문자로 작성하고 데이터를 지정합니다. 끝에 공간이 있으면, (즉, 쓰여질 문자 수가 count 보다 작은 경우) 버퍼가 null로 종료됩니다.

보안 정보보안 정보

format이 사용자 정의 문자열이 아닌지 확인하십시오.자세한 내용은 버퍼 오버런 방지를 참조하십시오.

참고

종료 null에 대한 공간이 있는지 확인하기 위해, count 이 확실히 버퍼 길이보다 작은지 확인하고 이 함수를 호출하여 null로 버퍼를 초기화합니다.

vsnprintf 는 _vsnprintf와 동일합니다. vsnprintf 은 ANSI 표준으로 규격에 포함됩니다; _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>*

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

호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.

예제

// 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, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg, va_copy, va_end, va_start