Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Écrire les données mises en forme sur une chaîne. Des versions plus sécurisées de certaines de ces fonctions sont disponibles ; consultez sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l. Les versions sécurisées swprintf et _swprintf_l n'acceptent pas le paramètre count.

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

buffer

Emplacement de stockage pour la sortie

count

Nombre maximal de caractères à stocker dans la version Unicode de cette fonction.

format

Chaîne de contrôle de format

argument

Arguments facultatifs

locale

Paramètres régionaux à utiliser.

Pour plus d'informations, consultez Spécifications de format.

Nombre de caractères écrits, ou -1, si une erreur s'est produite. Si buffer ou format est un pointeur null, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et attribuent à errno la valeur EINVAL.

sprintf retourne le nombre d'octets stockés dans buffer, sans compter le caractère null de fin. swprintf retourne le nombre de caractères larges stockés dans buffer, sans compter le caractère large null de fin.

La fonction sprintf met en forme une série de caractères et de valeurs et la stocke dans buffer. Chaque argument (le cas échéant) est converti et sorti selon la spécification de format correspondante dans format. Le format se compose de caractères ordinaires et a la même forme et fonction que l'argument format pour printf. Un caractère Null est ajouté après le dernier caractère écrit. Si la copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini.

Note de sécurité Note de sécurité

Avec sprintf, il n'existe aucun moyen de limiter le nombre de caractères écrits, ce qui signifie que le code utilisant sprintf risque un dépassement de mémoire tampon. Pensez à utiliser la fonction associée _snprintf, qui spécifie un nombre maximal de caractères à écrire dans buffer, ou utilisez _scprintf pour déterminer la taille de mémoire tampon requise. Assurez-vous également que format n'est pas une chaîne définie par l'utilisateur.

swprintf est une version à caractères larges de sprintf ; les arguments du pointeur vers swprintf sont des chaînes à caractères larges. La détection d'erreurs d'encodage dans swprintf peut différer de celle dans sprintf. swprintf et fwprintf ont un comportement identique, sauf que swprintf écrit la sortie dans une chaîne au lieu d'une destination de type FILE, et que swprintf nécessite que le paramètre countspécifie le nombre maximal de caractères à écrire. 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.

swprintf est conforme à la norme C ISO, qui requiert le deuxième paramètre, count, de type size_t. Pour forcer l'ancien comportement non standard, définissez _CRT_NON_CONFORMING_SWPRINTFS. Dans une version ultérieure, l'ancien comportement peut être supprimé et le code doit être modifié pour utiliser le nouveau comportement compatible.

En C++, ces fonctions ont des surcharges de modèle qui appellent les équivalents plus récents et sécurisés de ces fonctions. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l

Routine

En-tête requis

sprintf , _sprintf_l

<stdio.h>

swprintf , _swprintf_l

<stdio.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

// 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 );
}
Sortie :
   String:    computer
   Caractère: l
   Entier :   35
   Réel :      1.732053

nombre de caractères = 79
// 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 );
}
écrit 11 caractères
écrit - 1 caractère

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft