sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
Données mises en forme d'Écriture dans une chaîne.Plus les versions sécurisées à certaines de ces fonctions sont disponibles ; consultez sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.Les versions sécurisées d' swprintf et d' _swprintf_l n'acceptent pas de paramètre d' 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],
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
Paramètres
buffer
emplacement de stockage pour la sortiecount
Nombre maximal de caractères à stocker dans la version Unicode de cette fonction.format
chaîne de contrôle de formatargument
arguments facultatifslocale
Les paramètres régionaux à utiliser.
Pour plus d'informations, consultez Spécifications de format.
Valeur de retour
Le nombre de caractères entrés, ou - 1 si une erreur s'est produite.si buffer ou format est un pointeur null, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions retournent -1 et errno défini à EINVAL.
sprintf retourne le nombre d'octets stockés dans buffer, sans compter le caractère NULL de fin.swprintfretourne le nombre de caractères larges stockés dans buffer, sans compter le caractère élargi null de fin.
Notes
La fonction d' sprintf met en forme et enregistre une série de caractères et des valeurs dans buffer.Chaque argument (le cas échéant) est converti et de sortie en fonction de la spécification du format correspondante dans format.Le format est constituée de caractères ordinaires et a le même formulaire et fonction que l'argument d' format pour printf.Un caractère Null est ajouté après le dernier caractère écrit.Si copier se produit entre les chaînes qui se chevauchent, le comportement n'est pas défini.
Note de sécurité |
---|
À l'aide de sprintf, il n'y a aucun moyen de limiter le nombre de caractères entrés, ce qui signifie que le code à l'aide de sprintf risque les dépassements de mémoire tampon.Utilisez 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 une mémoire tampon est requise.en outre, assurez-vous qu' format n'est pas une chaîne définie par l'utilisateur. |
swprintf est une version à caractère élargi d' 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 de sprintf.swprintf et fwprintf se comportent de sauf que sortie d'écritures d' swprintf à une chaîne plutôt qu'à une destination de type FILE, et swprintf requiert le paramètre d' countpour spécifier le nombre maximal de caractères à écrire.Les versions de ces fonctions par le suffixe d' _l sont identiques mais elles utilisent le paramètre de paramètres régionaux passé au lieu des paramètres régionaux du thread courant.
swprintf est conforme à la norme ISO C, qui requiert le deuxième paramètre, count, de type size_t.pour forcer le comportement non standard ancien, définissez _CRT_NON_CONFORMING_SWPRINTFS.Dans une version ultérieure, l'ancien comportement peut être supprimé, le code doit être modifié pour utiliser le nouveau comportement de conformité.
En C++, ces fonctions ont des surcharges de modèle qui appellent des homologues plus récentes et sécurisées de ces fonctions.Pour plus d'informations, consultez Surcharges sécurisées de modèle.
mappages de routines de texte générique
routine de TCHAR.H |
_MBCS & de _UNICODE non défini |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_stprintf |
sprintf |
sprintf |
swprintf |
_stprintf_l |
_sprintf_l |
_sprintf_l |
__swprintf_l |
Configuration requise
routine |
en-tête requis |
---|---|
sprintf, _sprintf_l |
<stdio.h> |
swprintf, _swprintf_l |
<stdio.h> ou <wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// 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 );
}
Équivalent .NET Framework
Voir aussi
Référence
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l