sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Biçimlendirilmiş verileri bir dizeye yaz.Bu işlevlerden bazılarının daha güvenli sürümleri mevcuttur; bkz. sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.Güvenli swprintf ve _swprintf_l sürümleri bir count parametresi almaz.

int sprintf(
   char *buffer,
   const char *format [,
   argument] ... 
);
int _sprintf_l(
   char *buffer,
   const char *format,
   locale_t locale [,
   argument] ... 
);
int swprintf(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format [,
   argument]...
);
int _swprintf_l(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
);
int __swprintf_l(
   wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
);
template <size_t size>
int sprintf(
   char (&buffer)[size],
   const char *format [,
   argument] ... 
); // C++ only
template <size_t size>
int _sprintf_l(
   char (&buffer)[size],
   const char *format,
   locale_t locale [,
   argument] ... 
); // C++ only
template <size_t size>
int swprintf(
   wchar_t (&buffer)[size],
   const wchar_t *format [,
   argument]...
); // C++ only
template <size_t size>
int _swprintf_l(
   wchar_t (&buffer)[size],
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
); // C++ only

Parametreler

  • buffer
    Çıktı için depolama konumu

  • count
    Bu işlevin Unicode sürümünde saklanacak karakter sayısı üst sınırıdır.

  • format
    Biçim denetimi dizesi

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

  • locale
    Kullanılacak yerel ayar.

Daha fazla bilgi için bkz. Biçim Belirtimleri.

Dönüş Değeri

Yazılan karakterlerin sayısı veya bir hata oluştuysa –1.buffer or format bir null işaretçiyse, Parametre Doğrulama içinde açıklandığı şekilde geçersiz parametre işleyicisi çağrılır.Yürütmenin devam etmesine izin verilirse, bu işlevler -1 döndürür ve errno öğesini EINVAL olarak ayarlar.

sprintf, buffer içinde depolanan bayt sayısını verir; sondaki null karakter sayılmaz.swprintf, buffer içinde depolanan geniş karakterlerin sayısını verir; sondaki null geniş karakter sayılmaz.

Notlar

sprintf işlevi buffer içinde bir dizi karakter ve değer biçimlendirir ve depolar.Her argument (varsa) dönüştürülür ve denk gelen format kapsamındaki biçim belirtimine göre çıkışı alınır.Biçim sıradan karakterlerden oluşur ve printf için format bağımsız değişkeni ile aynı form ve işleve sahiptir.Null karakter, son karakter yazıldıktan sonra sona eklenir.Çakışan dizeler arasında kopyalama olursa davranış tanımsızdır.

Güvenlik NotuGüvenlik Notu

sprintf kullanıldığında yazılan karakter sayısını sınırlama yolu yoktur, bu da sprintf kullanan kodların arabellek taşmasına maruz kalabileceği anlamına gelir.buffer kapsamına yazılacak bir maksimum karakter sayısını belirten _snprintf ilgili işlevini kullanma imkanını değerlendirin, veya _scprintf kullanarak, ne büyüklükte bir arabellek gerektiğini belirleyin.Ayrıca, format öğesinin bir kullanıcı tanımlı dize olmadığından emin olun.

swprintf geniş karakterli bir sprintf sürümüdür; swprintf ile ilgili işaretçi bağımsız değişkenler geniş karakterli dizelerdir.swprintf içinde kodlama hatalarının algılanması sprintf öğesine kıyasla farklı olabilir.swprintf ve fwprintf şu istisnayla aynı şekilde davranır: swprintf, FILE türünden bir hedef yerine bir dizeye çıktı yazar ve swprintf yazılacak maksimum karakter sayısını belirtmek için countparametresini gerektirir._l sonekine sahip bu işlevlerin sürümleri, geçerli iş parçacığı yerel ayarı yerine iletilen yerel ayar parametresini kullanmalarıdır.

swprintf, size_t türünden count ikinci parametresini gerektiren ISO C Standardı'na uygundur.Eski standart dışı davranışı zorlamak için _CRT_NON_CONFORMING_SWPRINTFS tanımlayın.İleriki bir sürümde eski davranış kaldırılabilir, bu nedenle yeni ve uyumlu davranışın kullanılabilmesi için kod değiştirilmelidir.

C++ dilinde, bu işlevlerin daha yeni ve güvenli karşıtlarını başlatan şablon aşırı yüklemeleri vardır.Daha fazla bilgi için bkz. Güvenli Şablon Aşırı Yüklemeleri.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l

Gereksinimler

Yordam

Gerekli başlık

sprintf, _sprintf_l

<stdio.h>

swprintf, _swprintf_l

<stdio.h> or <wchar.h>

Ek uyumluluk bilgileri için Giriş altındaki Uyumluluk bölümüne bakın.

Örnek

// crt_sprintf.c
// compile with: /W3
// This program uses sprintf 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( buffer,     "   String:    %s\n", s ); // C4996
   j += sprintf( buffer + j, "   Character: %c\n", c ); // C4996
   j += sprintf( buffer + j, "   Integer:   %d\n", i ); // C4996
   j += sprintf( buffer + j, "   Real:      %f\n", fp );// C4996
   // Note: sprintf is deprecated; consider using sprintf_s instead

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

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

.NET Framework Eşdeğeri

System::String::Format

Ayrıca bkz.

Başvuru

Akış 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 İşlevleri