vsprintf、_vsprintf_l、vswprintf、_vswprintf_l、__vswprintf_lvsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l

引数リストへのポインターを使用して、書式付き出力を書き込みます。Write formatted output using a pointer to a list of arguments. これらの関数にはセキュリティが強化されたバージョンがあります。「vsprintf_s、_vsprintf_s_l、vswprintf_s、_vswprintf_s_l」を参照してください。More secure versions of these functions are available; see vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l.

構文Syntax

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

パラメーターParameters

バッファーbuffer
出力の格納位置。Storage location for output.

countcount
この関数のワイド文字列バージョンでは、格納する文字の最大数。Maximum number of characters to store, in the wide string versions of this function.

formatformat
書式の指定。Format specification.

argptrargptr
引数リストへのポインター。Pointer to list of arguments.

localelocale
使用するロケール。The locale to use.

戻り値Return Value

vsprintfvswprintf出力エラーが発生した場合に、終端の null 文字または負の値をしないなど、書き込まれる文字数を返します。vsprintf and vswprintf return the number of characters written, not including the terminating null character, or a negative value if an output error occurs. 場合バッファーまたは形式null ポインターの場合は、」の説明に従って、これらの関数は、無効なパラメーター ハンドラーを呼び出しますパラメーターの検証です。If buffer or format is a null pointer, these functions invoke the invalid parameter handler, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数は-1 を返し設定とerrnoEINVALします。If execution is allowed to continue, these functions return -1 and set errno to EINVAL.

エラー コードの詳細については、「_doserrno、errno、_sys_errlist、_sys_nerr」をご覧ください。For information on these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

RemarksRemarks

これらの各関数、引数リストへのポインターを受け取ると、書式を設定およびが指すメモリに指定されたデータを書き込みますバッファーします。Each of these functions takes a pointer to an argument list, and then formats and writes the given data to the memory pointed to by buffer.

これらの関数のバージョン、 _l現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて、サフィックスは同じです。The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

重要

使用してvsprintf、ある文字の数を制限する方法は書き込まれません、つまり、この関数を使用してコードがバッファー オーバーランを受けやすくなります。Using vsprintf, there is no way to limit the number of characters written, which means that code using this function is susceptible to buffer overruns. 代わりに _vsnprintf を使用するか、または _vscprintf を呼び出して、必要なバッファーの大きさを決定します。Use _vsnprintf instead, or call _vscprintf to determine how large a buffer is needed. また、いることを確認形式ユーザー定義文字列ではありません。Also, ensure that format is not a user-defined string. 詳しくは、「 バッファー オーバーランの回避」をご覧ください。For more information, see Avoiding Buffer Overruns.

vswprintf 、2 番目のパラメーターを必要とする ISO C 標準に準拠しているカウント、型のsize_tします。vswprintf conforms to the ISO C Standard, which requires the second parameter, count, of type size_t. 古い非標準動作を強制的には、次のように定義します。実行させるにはします。To force the old nonstandard behavior, define _CRT_NON_CONFORMING_SWPRINTFS. 以前の動作にない可能性が、今後のバージョンでは、ため、新しいに準拠した動作を使用するコードを変更する必要があります。The old behavior may not be in a future version, so code should be changed to use the new conformant behavior.

C++ では、これらの関数にテンプレートのオーバーロードがあります。このオーバーロードは、これらの関数に対応するセキュリティで保護された新しい関数を呼び出します。In C++, these functions have template overloads that invoke the newer, secure counterparts of these functions. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_vstprintf_vstprintf vsprintfvsprintf vsprintfvsprintf vswprintfvswprintf
_vstprintf_l_vstprintf_l _vsprintf_l_vsprintf_l _vsprintf_l_vsprintf_l _vswprintf_l_vswprintf_l

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header 省略可能なヘッダーOptional headers
vsprintf_vsprintf_lvsprintf, _vsprintf_l <stdio.h> および <stdarg.h><stdio.h> and <stdarg.h> <varargs.h>*<varargs.h>*
vswprintf_vswprintf_lvswprintf, _vswprintf_l <stdio.h> または <wchar.h>、および <stdarg.h><stdio.h> or <wchar.h>, and <stdarg.h> <varargs.h>*<varargs.h>*

* UNIX V との互換性用。* Required for UNIX V compatibility.

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

// 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 );
    va_end( args );
}

int main( void )
{
   test( "%d %c %d", 123, '<', 456 );
   test( "%s", "This is a string" );
}
123 < 456
This is a string

関連項目See also

ストリーム入出力Stream I/O
vprintf 系関数vprintf Functions
書式指定構文: printf 関数と wprintf 関数Format Specification Syntax: printf and wprintf Functions
fprintf、_fprintf_l、fwprintf、_fwprintf_lfprintf, _fprintf_l, fwprintf, _fwprintf_l
printf、_printf_l、wprintf、_wprintf_lprintf, _printf_l, wprintf, _wprintf_l
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
va_arg、va_copy、va_end、va_startva_arg, va_copy, va_end, va_start