Partager via


_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 sortie

  • sizeOfBuffer
    Nombre maximal de caractères à les enregistrer.

  • format
    chaîne de contrôle de format

  • argument
    arguments facultatifs

  • locale
    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

System : : chaîne : : format

Voir aussi

Référence

E/S de flux

_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 de vprintf

paramètres positionnels de printf_p