Aracılığıyla paylaş


vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Bir bağımsız değişkenler listesindeki bir işaretçi kullanarak biçimlendirilmiş çıktı yaz.Bunlar sürümleridir vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.

int vsprintf_s(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   va_list argptr 
); 
int _vsprintf_s_l(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   locale_t locale,
   va_list argptr 
); 
int vswprintf_s(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   va_list argptr 
);
int _vswprintf_s_l(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsprintf_s(
   char (&buffer)[size],
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int vswprintf_s(
   wchar_t (&buffer)[size],
   const wchar_t *format,
   va_list argptr 
); // C++ only

Parametreler

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

  • numberOfElements
    Boyutunu buffer karakter.

  • 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

vsprintf_sve vswprintf_s çı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 sayısı sıfır olduğunda bir null işaretçi veya biçim dizesi geçersiz biçimlendirme karakterlerini içeriyorsa, geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre doğrulama.Yürütülmesine devam etmek için izin verilirse, İşlevler -1 döndürür 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.

vswprintf_sISO c standardı uyan vswprintf, ikinci parametre gerektiren count, tür size_t.

Bu işlevleri, yalnızca güvenli sürümleri Konumsal parametreleri desteği bakımından güvenli olmayan sürümlerden farklıdır.Daha fazla bilgi için bkz. printf_p Konumsal Parametreler.

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ı.

C++'da, bu işlevler tarafından şablon aşırı kolaylaştırılmıştır; aşırı arabellek uzunluğu otomatik olarak gerçekleştirip (size baðýmsýz deðiþkeni belirtmek gereğini ortadan kaldırır) ve bunlar otomatik olarak yeni, güvenli karşılıkları ile eski, güvenli olmayan işlevler değiştirebilirsiniz.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_s

vsprintf_s

vsprintf_s

vswprintf_s

_vstprintf_s_l

_vsprintf_s_l

_vsprintf_s_l

_vswprintf_s_l

Gereksinimler

Yordamı

Gerekli başlık

İsteğe bağlı üstbilgileri

vsprintf_s, _vsprintf_s_l

<stdio.h> ve <stdarg.h>

<varargs.h> *

vswprintf_s, _vswprintf_s_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_s.c
// This program uses vsprintf_s to write to a buffer.
// The size of the buffer is determined by _vscprintf.

#include <stdlib.h>
#include <stdarg.h>

void test( char * format, ... )
{
   va_list args;
   int len;
   char * buffer;

   va_start( args, format );
   len = _vscprintf( format, args ) // _vscprintf doesn't count
                               + 1; // terminating '\0'
   buffer = malloc( len * sizeof(char) );
   vsprintf_s( buffer, len, format, args );
   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