_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l
Entrez les données mises en forme en une chaîne avec la possibilité de spécifier l'ordre dans lequel les paramètres sont utilisés dans la chaîne de format.
int _sprintf_p(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument] ...
);
int _sprintf_p_l(
char *buffer,
size_t sizeOfBuffer,
const char *format,
locale_t locale [,
argument] ...
);
int _swprintf_p(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format [,
argument]...
);
int _swprintf_p_l(
wchar_t *buffer,
size_t sizeOfBuffer,
const wchar_t *format,
locale_t locale [,
argument] …
);
Paramètres
buffer
emplacement de stockage pour la sortiesizeOfBuffer
Nombre maximal de caractères à les enregistrer.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.
Notes
La fonction d' _sprintf_pmet 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_p.Un caractère d' 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.La différence entre _sprintf_p et sprintf_s est qu' _sprintf_p prend en charge les paramètres positionnels, qui permet de spécifier l'ordre dans lequel les arguments sont utilisés dans la chaîne de format.Pour plus d'informations, consultez paramètres positionnels de printf_p.
_swprintf_p est une version à caractère élargi d' _sprintf_p; les arguments du pointeur vers _swprintf_p sont des chaînes à caractères larges.La détection d'erreurs d'encodage dans _swprintf_p peut différer de celle de _sprintf_p._swprintf_p et fwprintf_p se comportent de sauf que sortie d'écritures d' _swprintf_p à une chaîne plutôt qu'à une destination de type FILE, et _swprintf_p 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.
_sprintf_p retourne le nombre d'octets stockés dans buffer, sans compter le caractère de fin d' NULL ._swprintf_pretourne le nombre de caractères larges stockés dans buffer, sans compter le caractère élargi en terminant d' NULL .Si buffer ou format est un pointeur null, ou si la chaîne de format contient les caractères de mise en forme valides, 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.
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_p |
_sprintf_p |
_sprintf_p |
_swprintf_p |
_stprintf_p_l |
_sprintf_p_l |
_sprintf_p_l |
_swprintf_p_l |
Configuration requise
routine |
en-tête requis |
---|---|
_sprintf_p, _sprintf_p_l |
<stdio.h> |
_swprintf_p, _swprintf_p_l |
<stdio.h> ou <wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// crt_sprintf_p.c
// This program uses _sprintf_p 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_p( buffer, 200,
" String: %s\n", s );
j += _sprintf_p( buffer + j, 200 - j,
" Character: %c\n", c );
j += _sprintf_p( buffer + j, 200 - j,
" Integer: %d\n", i );
j += _sprintf_p( buffer + j, 200 - j,
" Real: %f\n", fp );
printf( "Output:\n%s\ncharacter count = %d\n",
buffer, j );
}
// crt_swprintf_p.c
// This is the wide character example which
// also demonstrates _swprintf_p returning
// error code.
#include <stdio.h>
#define BUFFER_SIZE 100
int main( void )
{
wchar_t buffer[BUFFER_SIZE];
int len;
len = _swprintf_p(buffer, BUFFER_SIZE, L"%2$s %1$d",
0, L" marbles in your head.");
_printf_p( "Wrote %d characters\n", len );
// _swprintf_p fails because string contains WEOF (\xffff)
len = _swprintf_p(buffer, BUFFER_SIZE, L"%s",
L"Hello\xffff world" );
_printf_p( "Wrote %d characters\n", len );
}
Équivalent .NET Framework
Voir aussi
Référence
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_l