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!!");
}
참고 항목
참조
않는다면, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l