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를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.
참고 항목
참조
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l