Freigeben über


sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Schreiben Sie formatierte Daten in eine Zeichenfolge. Sicherere Versionen einiger dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l. Die sicheren Versionen von swprintf und _swprintf_l akzeptieren 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],
   const wchar_t *format [,
   argument]...
); // C++ only
template <size_t size>
int _swprintf_l(
   wchar_t (&buffer)[size],
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
); // C++ only

Parameter

  • buffer
    Speicherort für die Ausgabe

  • count
    Maximale Anzahl, der in der Unicode-Version dieser Funktion zu speichernde 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. Wenn buffer oder format ein NULL-Zeiger ist, wird, wie in Parametervalidierung beschrieben, der Handler für ungültige Parameter aufgerufen. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen "– 1" zurück und legen errno auf EINVAL fest.

sprintf gibt die in buffer gespeicherte Byteanzahl zurück. Das beendende NULL-Zeichen wird dabei nicht mitgezählt. swprintf gibt die Anzahl der Breitzeichen zurück, die in buffer gespeicherten und nicht angerechnet das endgültige NULL-Zeichen-Breitzeichen.

Hinweise

Die sprintf-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 format-Argument für printf. Ein NULL-Zeichen wird nach dem letzten geschriebenen Zeichen angefügt. Wenn der Kopiervorgang zwischen Zeichenfolgen ausgeführt wird, die sich überschneiden, ist das Verhalten nicht definiert.

SicherheitshinweisSicherheitshinweis

Bei der Verwendung von sprintf gibt es keine Möglichkeit, die Anzahl der geschriebenen Zeichen einzuschränken. Demnach ist Code mit sprintf für Pufferüberläufe anfällig.Erwägen Sie die Verwendung der verwandten Funktion _snprintf, die eine Maximalzahl für Zeichen angibt, die an buffer geschrieben werden können, oder verwenden Sie _scprintf, um die Größe des erforderlichen Puffers zu bestimmen.Stellen Sie zudem sicher, dass format keine benutzerdefinierte Zeichenfolge ist.

swprintf ist eine Breitzeichen-Version von sprintf. Die Zeigerargumente zu swprintf sind Breitzeichen-Zeichenfolgen. Die Erkennung von Codierungsfehlern in swprintf unterscheidet sich möglicherweise von der in sprintf. swprintf und fwprintf identisch verhalten sich, dass swprintf schreibt Ausgabe in eine Zeichenfolge anstatt an ein Silverlight-Ziel vom Typ FILE, und swprintf 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.

swprintf ist zum ISO-C-Standard konform. Dieser erfordert den zweiten Parameter count des size_t-Typs. 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 möglicherweise entfernt. Daher sollte Code so geändert werden, dass das neue konforme Verhalten verwendet wird.

In C++ haben diese Funktionen Vorlagenüberladungen, mit denen die neueren, sicheren Entsprechungen dieser Funktionen aufgerufen werden. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_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>

Zusätzliche Informationen zur Kompatibilität 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::String::Format

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