sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Écrire des données mises en forme dans une chaîne.Write formatted data to a string. Il existe des versions plus sécurisées de certaines de ces fonctions. Consultez sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.More secure versions of some of these functions are available; see sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l. Les versions sécurisées de swprintf et _swprintf_l ne prennent pas de paramètre Count .The secure versions of swprintf and _swprintf_l do not take a count parameter.

SyntaxeSyntax

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

ParamètresParameters

bufferbuffer
Emplacement de stockage pour la sortieStorage location for output

countcount
Nombre maximal de caractères à stocker dans la version Unicode de cette fonction.Maximum number of characters to store in the Unicode version of this function.

formatformat
Chaîne de contrôle de formatFormat-control string

argumentargument
Arguments facultatifsOptional arguments

localelocale
Paramètres régionaux à utiliser.The locale to use.

Pour plus d'informations, consultez Spécifications de format.For more information, see Format Specifications.

Valeur de retourReturn Value

Nombre de caractères écrits, ou-1 si une erreur s’est produite.The number of characters written, or -1 if an error occurred. Si la mémoire tampon ou le format est un pointeur null, le gestionnaire de paramètres non valides est appelé, comme décrit dans validation de paramètre.If buffer or format is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions retournent-1 et attribuent à errno la valeur EINVAL.If execution is allowed to continue, these functions return -1 and set errno to EINVAL.

sprintf retourne le nombre d’octets stockés dans la mémoire tampon, sans compter le caractère null de fin.sprintf returns the number of bytes stored in buffer, not counting the terminating null character. swprintf retourne le nombre de caractères larges stockés dans la mémoire tampon, sans compter le caractère élargi de la valeur null de fin.swprintf returns the number of wide characters stored in buffer, not counting the terminating null wide character.

NotesRemarks

La fonction sprintf met en forme et stocke une série de caractères et de valeurs dans buffer.The sprintf function formats and stores a series of characters and values in buffer. Chaque argument (le cas échéant) est converti et sorti selon la spécification de format correspondante au format.Each argument (if any) is converted and output according to the corresponding format specification in format. Le format se compose de caractères ordinaires et a la même forme et fonction que l’argument format pour printf.The format consists of ordinary characters and has the same form and function as the format argument for printf. Un caractère null est ajouté après le dernier caractère écrit.A null character is appended after the last character written. Si une copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini.If copying occurs between strings that overlap, the behavior is undefined.

Important

À l’aide de sprintf, il n’existe aucun moyen de limiter le nombre de caractères écrits, ce qui signifie que le code utilisant sprintf est vulnérable aux dépassements de mémoire tampon.Using sprintf, there is no way to limit the number of characters written, which means that code using sprintf is susceptible to buffer overruns. Envisagez d’utiliser la fonction associée _snprintf, qui spécifie un nombre maximal de caractères à écrire dans la mémoire tampon, ou utilisez _scprintf pour déterminer la taille nécessaire d’une mémoire tampon.Consider using the related function _snprintf, which specifies a maximum number of characters to be written to buffer, or use _scprintf to determine how large a buffer is required. En outre, assurez-vous que format n’est pas une chaîne définie par l’utilisateur.Also, ensure that format is not a user-defined string.

swprintf est une version à caractères larges de sprintf; les arguments de pointeur vers swprintf sont des chaînes à caractères larges.swprintf is a wide-character version of sprintf; the pointer arguments to swprintf are wide-character strings. La détection des erreurs d’encodage dans swprintf peut différer de celle dans sprintf.Detection of encoding errors in swprintf may differ from that in sprintf. swprintf et fwprintf se comportent de la même manière, sauf que swprintf écrit la sortie dans une chaîne plutôt que dans une destination de type file, et swprintf nécessite que le paramètre Count spécifie le nombre maximal de caractères à écrire.swprintf and fwprintf behave identically except that swprintf writes output to a string rather than to a destination of type FILE, and swprintf requires the count parameter to specify the maximum number of characters to be written. Les versions de ces fonctions avec le suffixe _L sont identiques, sauf qu’elles utilisent les paramètres régionaux passés au lieu des paramètres régionaux du thread actuel.The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

swprintf est conforme à la norme ISO C, qui exige le deuxième paramètre, Count, de type size_t.swprintf conforms to the ISO C Standard, which requires the second parameter, count, of type size_t. Pour forcer l’ancien comportement non standard, définissez _CRT_NON_CONFORMING_SWPRINTFS.To force the old nonstandard behavior, define _CRT_NON_CONFORMING_SWPRINTFS. Sachant que l'ancien comportement risque d'être retiré dans une version ultérieure, il est conseillé de modifier le code pour utiliser le nouveau comportement conforme.In a future version, the old behavior may be removed, so code should be changed to use the new conformant behavior.

En C++, ces fonctions ont des surcharges de modèle qui appellent les équivalents plus récents et sécurisés de ces fonctions.In C++, these functions have template overloads that invoke the newer, secure counterparts of these functions. Pour plus d'informations, consultez Secure Template Overloads.For more information, see Secure Template Overloads.

Mappages de routines de texte génériqueGeneric-Text Routine Mappings

Routine TCHAR.HTCHAR.H routine _UNICODE et _MBCS non définis_UNICODE & _MBCS not defined _MBCS défini_MBCS defined _UNICODE défini_UNICODE defined
_stprintf_stprintf sprintfsprintf sprintfsprintf _swprintf_swprintf
_stprintf_l_stprintf_l _sprintf_l_sprintf_l _sprintf_l_sprintf_l __swprintf_l__swprintf_l

Configuration requiseRequirements

RoutineRoutine En-tête requisRequired header
sprintf, _sprintf_lsprintf, _sprintf_l <stdio.h><stdio.h>
swprintf, _swprintf_lswprintf, _swprintf_l <stdio.h> ou <wchar.h><stdio.h> or <wchar.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.For additional compatibility information, see Compatibility.

ExempleExample

// 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 );
}
Output:
   String:    computer
   Character: l
   Integer:   35
   Real:      1.732053

character count = 79

ExemplesExample

// 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 );
}
wrote 11 characters
wrote -1 characters

Voir aussiSee also

E/S de fluxStream I/O
fprintf, _fprintf_l, fwprintf, _fwprintf_lfprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_lprintf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_lsscanf, _sscanf_l, swscanf, _swscanf_l
vprintf, fonctionsvprintf Functions