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 konumucount
Bu işlevin Unicode sürümünde saklanacak karakter sayısı üst sınırıdır.format
Biçim denetimi dizesiargument
İsteğe bağlı bağımsız değişkenlerlocale
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 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
Ayrıca bkz.
Başvuru
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l