_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Écrire les données mises en forme dans une chaîne avec la possibilité de spécifier l’ordre que 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 sortie

sizeOfBuffer
Nombre maximal de caractères à stocker.

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.

La fonction _sprintf_p 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 est constitué de caractères ordinaires et a la même forme et fonction que la format argument pour printf_p. Une NULL caractère est ajouté après le dernier caractère écrit. Si une copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini. La différence entre _sprintf_p et sprintf_s vient du fait que _sprintf_p prend en charge les paramètres positionnels, ce qui vous 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 printf_p.

_swprintf_p est une version à caractères larges de _sprintf_p ; les arguments de pointeur de _swprintf_p sont des chaînes à caractères larges. La détection d'erreurs d'encodage dans _swprintf_p peut différer de celle dans _sprintf_p. _swprintf_pet fwprintf_p se comportent de façon identique, sauf que _swprintf_p écrit la sortie vers une chaîne plutôt que vers une destination de type FILE, et _swprintf_p requiert le countpour spécifier 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.

_sprintf_pRetourne le nombre d’octets stockés dans buffer, sans compter la fin du NULL caractère. _swprintf_pRetourne le nombre de caractères larges stockés dans buffer, sans compter la fin du NULL caractères larges. Si buffer ou format est un pointeur null, ou si la chaîne de format contient des caractères de mise en forme non valides, le Gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et définissent errno avec la valeur EINVAL.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_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
RoutineEn-tête requis
_sprintf_p, _sprintf_p_l<stdio.h>
_swprintf_p, _swprintf_p_l<stdio.h> ou <wchar.h>

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

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

Output:  
   String:    computer  
   Character: l  
   Integer:   35  
   Real:      1.732053  
  
character count = 79  

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

Wrote 24 characters  
Wrote -1 characters  

System::String::format

Flux d’e/s
_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
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
Fonctions vprintf
Paramètres positionnels printf_p

Afficher: