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
Ayrıca bkz.
Başvuru
Biçim Belirtim Sözdizimi: printf ve wprintf İşlevleri
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l