Aracılığıyla paylaş


sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l

Verileri biçimlendirilmiş bir dize yazın.Bunlar sürümleridir sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.

int sprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format [,
   argument] ... 
);
int _sprintf_s_l(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format,
   locale_t locale [,
   argument] ... 
);
int swprintf_s(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format [,
   argument]...
);
int _swprintf_s_l(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format,
   locale_t locale [,
   argument]…
);
template <size_t size>
int sprintf_s(
   char (&buffer)[size],
   const char *format [,
   argument] ... 
); // C++ only
template <size_t size>
int swprintf_s(
   wchar_t (&buffer)[size],
   const wchar_t *format [,
   argument]...
); // C++ only

Parametreler

  • buffer
    Çıktı için depolama konumu

  • sizeOfBuffer
    Saklamak için karakter sayısı üst sınırı.

  • format
    Denetim Biçimlendir dize

  • argument
    İsteğe bağlı bağımsız değişkenler

  • locale
    Kullanılacak yerel ayarı.

Daha fazla bilgi için bkz: Biçimi belirtimleri.

Dönüş Değeri

Yazılan karakterleri veya bir hata oluştuysa –1 sayısı.If buffer or format is a null pointer, sprintf_s and swprintf_s return -1 and set errno to EINVAL.

sprintf_sdepolanan bayt sayısını verir buffer, sondaki boş karakter hesaplanmaz.swprintf_sdepolanan geniş karakter sayısını verir buffer, null Sonlandırıcı geniş karakter hesaplanmaz.

Notlar

sprintf_s İşlevi biçimlendirir ve bir dizi karakter ve değerleri saklayan buffer.Her argument (varsa) dönüştürülür ve ilgili biçim belirtimini uyarınca çıktı format.Biçim sıradan karakterlerden oluşur ve aynı form ve olarak işlev format bağımsız değişkeni printf.Boş karakter yazılmış son karakterin arkasına eklenir.Kopyalama dizeler arasında çakışma oluşursa, tanımsız bir davranıştır.

Arasında bir temel fark sprintf_s ve sprintf olan sprintf_s ama biçim dizesi geçerli biçimlendirme karakterleri denetler sprintf yalnızca biçim dizesi veya arabellek olup olmadığını denetler NULL işaretçiler.Ya da başarısız iade ederseniz, geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre doğrulama.Yürütülmesine devam etmek için ayarlar ve iþlev döndüðünde -1 veriliyorsa, errno için EINVAL.

Diğer arasındaki temel fark sprintf_s ve sprintf olan sprintf_s çıkış arabelleği boyutunu belirleyen karakter uzunluğu parametre alır.Arabellek yazdırılan metinlerde çok küçükse arabellek boş bir dizeye ayarlanmış ve geçersiz parametre işleyicisi çağrılır.Aksine snprintf, sprintf_s arabellek (arabellek boyutu sıfır değilse) biten emin garanti eder.

swprintf_sgeniş karakter sürümü sprintf_s; İşaretçi bağımsız swprintf_s geniş karakter dizeleridir.Kodlama hatalarını algılama swprintf_s görünenden farklı olabilir sprintf_s.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.

Sürümü vardır sprintf_s arabellek çok küçük olursa ne olur üzerinde ek denetim sunar.Daha fazla bilgi için bkz. _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l.

Genel metin yordamı eşlemeleri

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlı değil

Tanımlanan _mbcs

Tanımlanan _UNICODE

_stprintf_s

sprintf_s

sprintf_s

swprintf_s

_stprintf_s_l

_sprintf_s_l

_sprintf_s_l

_swprintf_s_l

Gereksinimler

Yordamı

Gerekli başlık

sprintf_s, _sprintf_s_l

<stdio.h>

swprintf_s, _swprintf_s_l

<stdio.h> veya <wchar.h>

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

Örnek

// crt_sprintf_s.c
// This program uses sprintf_s to format various
// data and place them in the string named buffer.
//

#include <stdio.h>

int main( void )
{
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;

   // Format and print various data: 
   j  = sprintf_s( buffer, 200,     "   String:    %s\n", s );
   j += sprintf_s( buffer + j, 200 - j, "   Character: %c\n", c );
   j += sprintf_s( buffer + j, 200 - j, "   Integer:   %d\n", i );
   j += sprintf_s( buffer + j, 200 - j, "   Real:      %f\n", fp );

   printf_s( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}
  
// crt_swprintf_s.c
// wide character example
// also demonstrates swprintf_s returning error code
#include <stdio.h>

int main( void )
{
   wchar_t buf[100];
   int len = swprintf_s( buf, 100, L"%s", L"Hello world" );
   printf( "wrote %d characters\n", len );
   len = swprintf_s( buf, 100, L"%s", L"Hello\xffff world" );
   // swprintf_s fails because string contains WEOF (\xffff)
   printf( "wrote %d characters\n", len );
}
  

.NET Framework Eşdeğeri

[M:System::String::Format]

Ayrıca bkz.

Başvuru

G/ç

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sscanf, _sscanf_l, swscanf, _swscanf_l

vprintf işlevleri