Freigeben über


_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l

zum formatierte Daten in eine Zeichenfolge mit der Möglichkeit, die Reihenfolge anzugeben, dass die Parameter in der Formatzeichenfolge verwendet werden.

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] … 
);

Parameter

  • buffer
    Speicherort für die Ausgabe

  • sizeOfBuffer
    Die maximale Anzahl der zu speichernden Zeichen.

  • format
    Formatsteuerzeichenfolge

  • argument
    Optionale Argumente

  • locale
    Das zu verwendende Gebietsschema.

Weitere Informationen finden Sie unter Formatangaben.

Rückgabewert

Die Anzahl geschriebener Zeichen oder "– 1" bei einem Fehler.

Hinweise

Die _sprintf_p - Funktion formatiert und speichert eine Reihe von Zeichen und Werte in buffer. Jedes argument (falls vorhanden) wird entsprechend der jeweiligen Formatangabe in format konvertiert und ausgegeben. Das Format besteht aus normalen Zeichen und hat die gleiche Form und Funktion wie das Argument format für printf_p. Ein NULL Zeichen wird nach dem geschriebenen letzten Zeichen angefügt. Wenn der Kopiervorgang zwischen Zeichenfolgen ausgeführt wird, die sich überschneiden, ist das Verhalten nicht definiert. Der Unterschied zwischen _sprintf_p und sprintf_s ist, dass _sprintf_p positionelle Parameter unterstützt, wodurch festgelegt werden kann, in welcher Reihenfolge die Argumente in der Formatzeichenfolge verwendet werden. Weitere Informationen finden Sie unter printf_p-Positionsparameter.

_swprintf_p ist eine Breitzeichen-Version von _sprintf_p. Die Zeigerargumente zu _swprintf_p sind Breitzeichen-Zeichenfolgen. Die Erkennung von Codierungsfehlern in _swprintf_p unterscheidet sich möglicherweise von der in _sprintf_p. _swprintf_p und fwprintf_p identisch verhalten sich, dass _swprintf_p schreibt Ausgabe in eine Zeichenfolge anstatt an ein Silverlight-Ziel vom Typ FILE, und _swprintf_p erfordert den count-Parameter, die maximale Anzahl der zu schreibenden Zeichen anzugeben. Die Versionen dieser Funktionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch den ihnen übergebenen Gebietsschemaparameter anstelle des aktuellen Threadgebietsschemas.

_sprintf_p gibt die Anzahl von Bytes zurück, die in buffer gespeicherten und nicht angerechnet das abschließende Zeichen NULL. _swprintf_p gibt die Anzahl der Breitzeichen zurück, die in buffer gespeicherten und nicht angerechnet das abschließende NULL Breitzeichen. Wenn buffer oder format ein NULL-Zeiger ist oder wenn Formatzeichenfolge die ungültige Formatierungszeichen enthält, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen "– 1" zurück und legen errno auf EINVAL fest.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_stprintf_p

_sprintf_p

_sprintf_p

_swprintf_p

_stprintf_p_l

_sprintf_p_l

_sprintf_p_l

_swprintf_p_l

Anforderungen

Routine

Erforderlicher Header

_sprintf_p, _sprintf_p_l

<stdio.h>

_swprintf_p, _swprintf_p_l

<stdio.h> oder <wchar.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

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

.NET Framework-Entsprechung

System::String::Format

Siehe auch

Referenz

Stream-E/A

_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

vprintf-Funktionen

printf_p-Positionsparameter