_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 AusgabesizeOfBuffer
Die maximale Anzahl der zu speichernden Zeichen.format
Formatsteuerzeichenfolgeargument
Optionale Argumentelocale
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
Siehe auch
Referenz
_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