Aracılığıyla paylaş


vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l

Bir bağımsız değişkenler listesindeki bir işaretçi kullanarak biçimlendirilmiş çıktı yaz.Bu işlevler daha güvenli sürümlerinin kullanılabilir olduğunu; see 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],
   size_t count,
   const wchar_t *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vswprintf_l(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
); // C++ only

Parametreler

  • buffer
    Çıkış için depolama konumu.

  • count
    En fazla olarak depolamak için karakter sayısı UNICODE bu işlev sürümü.

  • format
    Biçim belirtimi.

  • argptr
    Bağımsız değişkenler listesi için işaretçi.

  • locale
    Kullanılacak yerel ayarı.

Dönüş Değeri

vsprintfve vswprintf çıkış hata oluşursa ve sondaki boş karakter ya da negatif bir değer içermeyen yazılan karakterlerin sayısını döndürür.buffer Veya format bir null işaretçi açıklandığı gibi bu işlevleri geçersiz parametre işleyicisi çağırmak Parametre doğrulama.Yürütülmesine devam etmek için izin verilmişse, bu işlevler -1 geri dönün ve errno için EINVAL.

Bunlar ve diğer hata kodları hakkında daha fazla bilgi için bkz: _doserrno, errno, _sys_errlist ve _sys_nerr.

Notlar

Bu işlevlerden her biri bir bağımsız değişken listesi için bir işaretçi alır ve sonra biçimlendirir ve belirli verilere göre sıralanmasını bellek Yazar buffer.

Bu işlevler ile sürümlerini _l soneki yerine geçerli iş parçacığı yerel geçirilen yerel parametresi kullandıkları dışında aynı.

Güvenlik NotuGüvenlik Notu

Kullanarak vsprintf, burada kod bu işlevi kullanmak için arabellek taşmaları açıktır yani karakter sayısını sınırlamak için hiçbir şekilde yazılır.Use _vsnprintf bunun yerine veya arama _vscprintf ne kadar büyük bir arabellek gerekli belirlemek için.Ayrıca, emin format kullanıcı tanımlı bir dize değil.Daha fazla bilgi için bkz: Önleme arabelleğin taşmasına neden.

vswprintfISO c ikinci parametre gerektiren standart, uyan count, tür size_t.Eski standart dışı davranışı zorlamak için tanımladığınız _CRT_NON_CONFORMING_SWPRINTFS. kod yeni uyumluluğunu davranışı kullanmak için değiştirilmesi gereken şekilde eski davranış gelecekteki bir sürümüne olmayabilir.

C++'da, bu işlevlerin daha yeni ve güvenli karşılıkları çağırmak şablon aşırı bu işlevleri vardır.Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.

Genel metin yordamı eşlemeleri

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlı değil

Tanımlanan _mbcs

Tanımlanan _UNICODE

_vstprintf

vsprintf

vsprintf

vswprintf

_vstprintf_l

_vsprintf_l

_vsprintf_l

_vswprintf_l

Gereksinimler

Yordamı

Gerekli başlık

İsteğe bağlı üstbilgileri

vsprintf, _vsprintf_l

<stdio.h> ve <stdarg.h>

<varargs.h> *

vswprintf, _vswprintf_l

<stdio.h> ya da <wchar.h> ve <stdarg.h>

<varargs.h> *

* UNIX v uyumluluk için gereklidir.

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// 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" );
}
  

.NET Framework Eşdeğeri

System::String::Format

Ayrıca bkz.

Başvuru

G/ç

vprintf işlevleri

Biçim Belirtim Sözdizimi: printf ve wprintf İşlevleri

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg va_end, va_start