Sdílet prostřednictvím


sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Zapisovat data formátovaný řetězec.Některé z těchto funkcí bezpečnější verze jsou k dispozici; see sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.Zabezpečená verze swprintf a _swprintf_l nepoužívejte count parametr.

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],
   size_t count,
   const wchar_t *format [,
   argument]...
); // C++ only
template <size_t size>
int _swprintf_l(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
); // C++ only

Parametry

  • buffer
    Umístění úložiště pro výstup

  • count
    Maximální počet znaků Unicode verze této funkce Uložit.

  • format
    Řetězec formátu řízení

  • argument
    Volitelné argumenty

  • locale
    Národní prostředí použít.

Další informace naleznete v tématu Specifikace formátu.

Vrácená hodnota

Počet znaků, které jsou zapsány nebo –1, pokud došlo k chybě.Pokud buffer nebo format je nulový ukazatel vyvolat neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, vrátí tyto funkce hodnotu -1 a errno na EINVAL.

sprintfVrátí počet bajtů, které jsou uloženy v buffer, se nepočítají ukončujícím znakem null.swprintfVrátí počet široké znaků, které jsou uloženy v buffer, se nepočítají ukončující širokým znakem null.

Poznámky

sprintf Funkce formáty a ukládá řadu znaků a hodnot v buffer.Každý argument (pokud existuje) převedena a výstup podle odpovídající specifikaci formátu v format.Formát se skládá z běžných znaků a má stejný formulář a fungovat jako format argument pro printf.Po poslední znak zapsán připojen znakem null.Kopírování dojde-li mezi řetězce, které se překrývají, chování není definována.

Poznámka k zabezpečeníPoznámka k zabezpečení

Pomocí sprintf, neexistuje žádný způsob, jak omezit počet znaků písemné, což znamená, že kód pomocí sprintf je náchylná k přetečení.Zvažte použití související funkce _snprintf, který určuje maximální počet znaků, které budou zapsány do buffer, nebo pomocí _scprintf zjistit, jak velké vyrovnávací paměti je vyžadován.Také zajistit, aby format není uživatelem definovaný řetězec.

swprintfje verze celého znaku sprintf; ukazatel argumenty swprintf jsou celý znak řetězce.Zjišťování chyb v kódování swprintf se mohou lišit v sprintf.swprintfa fwprintf s výjimkou, že se chovají stejně swprintf zapíše výstupní řetězec, místo určení typu FILE, a swprintf vyžaduje countparametr určuje maximální počet znaků, které mají být zaznamenány.Verze těchto funkcí se _l přípony jsou shodné s výjimkou, že používají národní prostředí parametr předaný namísto aktuální podproces národní prostředí.

swprintfvyhovuje standardu C ISO, které vyžaduje druhý parametr, count, typu size_t.Chcete-li vynutit staré nestandardní chování definovat _CRT_NON_CONFORMING_SWPRINTFS.Budoucí verze mohou být odstraněny staré chování tak, že by měl být změněn kód použít toto nové chování splňovala podmínky shody.

V jazyce C++ mají tyto funkce šablony přetížení, které vyvolávají novější, zabezpečené protějšků těchto funkcí.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Obecný Text rutinní mapování

TCHAR.Rutina H

_UNICODE & _MBCS není definován

_MBCS, definice

_UNICODE, definice

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l

Požadavky

Rutina

Požadované záhlaví

sprintf, _sprintf_l

<stdio.h>

swprintf, _swprintf_l

<stdio.h> nebo <wchar.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

// 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 );
}
  

Ekvivalent v rozhraní .NET Framework

System::String::Format

Viz také

Referenční dokumentace

Proud I/O

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sscanf, _sscanf_l, swscanf, _swscanf_l

Funkce vprintf