_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l
Write 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
Maximale Anzahl von Zeichen zu speichern.format
Formatsteuerzeichenfolgeargument
Optionale Argumentelocale
Das zu verwendende Gebietsschema.
Weitere Informationen finden Sie unter Formatangaben.
Rückgabewert
Die Anzahl der geschriebenen Zeichen oder 1, wenn ein Fehler aufgetreten ist.
Hinweise
Die _sprintf_pFunktion formatiert und speichert eine Reihe von Zeichen und Werte in buffer.Jedes argument (falls vorhanden) wird und Ausgabe entsprechend der entsprechenden Formatelement in formatkonvertiert.Das Format besteht aus normalen Zeichen und weist das gleiche Funktion wie das Formular, und format-Argument für printf_p.Ein NULL Zeichen wird nach dem letzten geschriebenen Zeichen angehängt.Wenn das Kopieren zwischen Zeichenfolgen auftritt, die sich überschneiden, ist das Verhalten nicht definiert.Der Unterschied zwischen _sprintf_p und sprintf_s besteht darin, dass _sprintf_p positionelle Parameter unterstützt, ermöglicht das Angeben der Reihenfolge, in der die Argumente in der Formatzeichenfolge verwendet werden.Weitere Informationen finden Sie unter printf_p positionelle Parameter.
_swprintf_p ist eine Breitzeichen-Version von _sprintf_p. Zeiger auf die Argumente _swprintf_p sind Zeichenfolgen mit Breitzeichen.Erkennung von Codierungsfehlern in _swprintf_p unterscheidet möglicherweise von der in _sprintf_p._swprintf_p und fwprintf_p verhalten sich identisch, mit der Ausnahme, dass _swprintf_p schreibt die Ausgabe in einer Zeichenfolge anstatt an ein Ziel des Typs FILE, und _swprintf_p erfordert den countParameter, die maximale Anzahl zu schreibender Zeichen enthält.Die Versionen dieser Funktionen mit dem _l Suffix sind identisch, mit der Ausnahme, dass sie verwenden den Gebietsschemaparameter, der anstelle des aktuellen Threads gebietsschemas übergeben wird.
_sprintf_p gibt die Anzahl von Bytes zurück, die in buffergespeichert werden und keine zählt das endende NULL Zeichen._swprintf_pgibt die Anzahl der Breitzeichen zurück, die in buffergespeichert werden und keine zählt das endende NULL Breitzeichen.Wenn buffer oder format ein NULL-Zeiger ist, oder wenn die Formatierung der Formatzeichenfolge ungültige Zeichen enthält ungültige Parameter, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben diese Funktionen festlegen und -1 errno zu EINVALzurück.
Zuweisung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definieren |
_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> |
Um Kompatibilität zusätzlichen Informationen 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