vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l

 

Visual Studio 2017 에 대한 최신 설명서는 Visual Studio 2017 설명서를 참조하세요.

인수 목록에 대한 포인터를 사용하여 형식이 지정된 출력을 씁니다. 이러한 함수의 더 안전한 버전은 사용할 수 있습니다. 참조 vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l합니다.

int vsprintf(  
   char *buffer,  
   const char *format,  
   va_list argptr   
);   
int _vsprintf_l(  
   char *buffer,  
   const char *format,  
   locale_t locale,  
   va_list argptr   
);   
int vswprintf(  
   wchar_t *buffer,  
   size_t count,  
   const wchar_t *format,  
   va_list argptr   
);  
int _vswprintf_l(  
   wchar_t *buffer,  
   size_t count,  
   const wchar_t *format,  
   locale_t locale,  
   va_list argptr   
);  
int __vswprintf_l(  
   wchar_t *buffer,  
   const wchar_t *format,  
   locale_t locale,  
   va_list argptr   
);  
template <size_t size>  
int vsprintf(  
   char (&buffer)[size],  
   const char *format,  
   va_list argptr   
); // C++ only  
template <size_t size>  
int _vsprintf_l(  
   char (&buffer)[size],  
   const char *format,  
   locale_t locale,  
   va_list argptr   
); // C++ only  
template <size_t size>  
int vswprintf(  
   wchar_t (&buffer)[size],  
   const wchar_t *format,  
   va_list argptr   
); // C++ only  
template <size_t size>  
int _vswprintf_l(  
   wchar_t (&buffer)[size],  
   const wchar_t *format,  
   locale_t locale,  
   va_list argptr   
); // C++ only  

매개 변수

buffer
출력을 위한 저장소 위치입니다.

count
최대 문자를 저장에 UNICODE 이 함수의 버전입니다.

format
형식 사양입니다.

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

locale
사용할 로캘입니다.

vsprintfvswprintf는 null 종결 문자를 포함하지 않고 작성된 문자 수를 반환하거나, 출력 오류가 발생하는 경우 음수 값을 반환합니다. 경우 buffer 또는 format 가 null 포인터 이면 이러한 함수에 설명 된 대로 잘못 된 매개 변수 처리기가 호출 매개 변수 유효성 검사합니다. 계속해서 실행하도록 허용된 경우 이러한 함수가 -1을 반환하고 errnoEINVAL로 설정합니다.

이러한 코드 및 기타 오류 코드에 대 한 자세한 내용은 참조 _doserrno, errno, _sys_errlist 및 _sys_nerr합니다.

이러한 각 함수는 인수 목록에 대 한 포인터 서식을 지정 하 고 가리키는 메모리에 지정된 된 데이터를 씁니다 buffer합니다.

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

System_CAPS_ICON_important.jpg 중요

사용 하 여 vsprintf, 여기 문자 수 제한이 없으므로으로 작성 된이 함수를 사용 하 여 코드는 버퍼 오버런에 취약 합니다. 사용 하 여 _vsnprintf 대신 호출 또는 _vscprintf 얼마나 큰 버퍼 필요 하다 고 판단 하 합니다. 또한 format이 사용자 정의 문자열이 아닌지 확인합니다. 자세한 내용은 버퍼 오버런 방지를 참조하세요.

vswprintfsize_t 형식의 두 번째 매개 변수 count를 요구하는 ISO C 표준을 준수합니다. 기존 비표준 동작을 적용할 정의 _CRT_NON_CONFORMING_SWPRINTFS. 새 준수 동작을 사용 하 여 코드를 변경 해야 하므로 기존 동작 이후 버전에 없을 수 있습니다.

C++에서 이러한 함수는 보다 최신의 보안 대응 함수를 호출하는 템플릿 오버로드를 갖고 있습니다. 자세한 내용은 Secure Template Overloads을 참조하세요.

제네릭 텍스트 라우팅 매핑

TCHAR.H 루틴_UNICODE 및 _MBCS 정의되지 않음_MBCS 정의됨_UNICODE 정의됨
_vstprintfvsprintfvsprintfvswprintf
_vstprintf_l_vsprintf_l_vsprintf_l_vswprintf_l
루틴필수 헤더선택적 헤더
vsprintf, _vsprintf_l<stdio.h> 및 <stdarg.h><varargs.h>*
vswprintf, _vswprintf_l<stdio.h> 또는 <wchar.h> 및 <stdarg.h><varargs.h>*

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

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

// crt_vsprintf.c  
// compile with: /W3  
// This program uses vsprintf to write to a buffer.  
// The size of the buffer is determined by _vscprintf.  
  
#include <stdlib.h>  
#include <stdio.h>  
#include <stdarg.h>  
  
void test( char * format, ... )  
{  
    va_list args;  
    int     len;  
    char    *buffer;  
  
    // retrieve the variable arguments  
    va_start( args, format );  
  
    len = _vscprintf( format, args ) // _vscprintf doesn't count  
                                + 1; // terminating '\0'  
  
    buffer = (char*)malloc( len * sizeof(char) );  
  
    vsprintf( buffer, format, args ); // C4996  
    // Note: vsprintf is deprecated; consider using vsprintf_s instead  
    puts( buffer );  
  
    free( buffer );  
}  
  
int main( void )  
{  
   test( "%d %c %d", 123, '<', 456 );  
   test( "%s", "This is a string" );  
}  

123 < 456  
This is a string  

System::String::Format

스트림 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

표시: