sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
Write formatierte Daten in eine Zeichenfolge.Sicherere Versionen einiger dieser Funktionen sind verfügbar. Weitere Informationen finden Sie unter sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.Die sicheren Versionen von swprintf und _swprintf_l nehmen keinen count-Parameter.
int sprintf(
char *buffer,
const char *format [,
argument] ...
);
int _sprintf_l(
char *buffer,
const char *format,
locale_t locale [,
argument] ...
);
int swprintf(
wchar_t *buffer,
size_t count,
const wchar_t *format [,
argument]...
);
int _swprintf_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale [,
argument] ...
);
int __swprintf_l(
wchar_t *buffer,
const wchar_t *format,
locale_t locale [,
argument] ...
);
template <size_t size>
int sprintf(
char (&buffer)[size],
const char *format [,
argument] ...
); // C++ only
template <size_t size>
int _sprintf_l(
char (&buffer)[size],
const char *format,
locale_t locale [,
argument] ...
); // C++ only
template <size_t size>
int swprintf(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format [,
argument]...
); // C++ only
template <size_t size>
int _swprintf_l(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
locale_t locale [,
argument] ...
); // C++ only
Parameter
buffer
Speicherort für die Ausgabecount
Maximale Anzahl in der Unicode-Version dieser Funktion zu speichern Zeichen.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.Wenn buffer oder format ein NULL-Zeiger ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben diese Funktionen festlegen und -1 errno zu EINVALzurück.
sprintf gibt die Anzahl von Bytes zurück, die in buffergespeichert werden und keine zählt das NULL.swprintfgibt die Anzahl der Breitzeichen zurück, die in buffergespeichert werden und keine zählt das Breitzeichen des abschließenden NULL-Zeichens.
Hinweise
Die sprintf-Funktion 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.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.
Sicherheitshinweis |
---|
Verwenden sprintfgibt es keine Möglichkeit, die Anzahl der geschriebenen Zeichen beschränkt. Dies bedeutet, dass Code mit sprintf gegen Pufferüberläufe anfällig ist.Es empfiehlt sich, die verwandte Funktion _snprintfzu verwenden, die eine maximale Anzahl von zu schreibenden Zeichen bufferangibt, oder verwenden Sie _scprintf , um zu ermitteln, wie groß ein Puffer erforderlich ist.Stellen Sie außerdem sicher, dass format keine benutzerdefinierte Zeichenfolge ist. |
swprintf ist eine Breitzeichen-Version von sprintf. Zeiger auf die Argumente swprintf sind Zeichenfolgen mit Breitzeichen.Erkennung von Codierungsfehlern in swprintf unterscheidet möglicherweise von der in sprintf.swprintf und fwprintf verhalten sich identisch, mit der Ausnahme, dass swprintf schreibt die Ausgabe in einer Zeichenfolge anstatt an ein Ziel des Typs FILE, und swprintf 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.
swprintf entspricht den ISO-C-Standard, der den zweiten Parameter erfordert, countvom Typ size_tan.Um das alte Nicht dem Standard entsprechende Verhalten zu erzwingen, definieren Sie _CRT_NON_CONFORMING_SWPRINTFS.In einer zukünftigen Version wird das alte Verhalten entfernt. Daher sollte Code geändert werden, um das neue konforme Verhalten verwendet werden soll.
In C++ haben Überladungen Vorlagen, die diese Funktionen aufrufen, um das neueres, Entsprechungen dieser Funktionen.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.
Zuweisung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definieren |
_UNICODE definiert |
---|---|---|---|
_stprintf |
sprintf |
sprintf |
swprintf |
_stprintf_l |
_sprintf_l |
_sprintf_l |
__swprintf_l |
Anforderungen
Routine |
Erforderlicher Header |
---|---|
sprintf, _sprintf_l |
<stdio.h> |
swprintf, _swprintf_l |
<stdio.h> oder <wchar.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_sprintf.c
// compile with: /W3
// This program uses sprintf 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( buffer, " String: %s\n", s ); // C4996
j += sprintf( buffer + j, " Character: %c\n", c ); // C4996
j += sprintf( buffer + j, " Integer: %d\n", i ); // C4996
j += sprintf( buffer + j, " Real: %f\n", fp );// C4996
// Note: sprintf is deprecated; consider using sprintf_s instead
printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}
// crt_swprintf.c
// wide character example
// also demonstrates swprintf returning error code
#include <stdio.h>
int main( void )
{
wchar_t buf[100];
int len = swprintf( buf, 100, L"%s", L"Hello world" );
printf( "wrote %d characters\n", len );
len = swprintf( buf, 100, L"%s", L"Hello\xffff world" );
// swprintf fails because string contains WEOF (\xffff)
printf( "wrote %d characters\n", len );
}
.NET Framework-Entsprechung
Siehe auch
Referenz
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l