Freigeben über


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 Ausgabe

  • count
    Maximale Anzahl in der Unicode-Version dieser Funktion zu speichern Zeichen.

  • format
    Formatsteuerzeichenfolge

  • argument
    Optionale Argumente

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

SicherheitshinweisSicherheitshinweis

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

System::::ZeichenfolgeFormat

Siehe auch

Referenz

Stream E/A

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sscanf, _sscanf_l, swscanf, _swscanf_l

vprintf Funktionen