Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

snprintf - Formatierte Ausgabe in eine Zeichenkette

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

int snprintf(char *s, size_t n, const char *format, argumentenliste);

snprintf bereitet Daten (Zeichen, Zeichenketten, numerische Werte) gemäß den Angaben in der Zeichenkette format auf und schreibt sie in den Bereich, auf den s zeigt.

snprintf bricht die Ausgabe beim Erreichen der mit dem Parameter n spezifizierten Länge ab, wodurch ein Pufferüberlauf verhindert werden kann. Ansonsten ist die Funktionalität von snprintf identisch zu der von sprintf.

Parameter

char *s

Zeiger auf die Ergebniszeichenkette. snprintf schließt die Zeichenkette mit dem Nullbyte (\0) ab. Die maximale Länge der Ausgabe beträgt daher n-1.

size_t n

Länge des für die Ergebniszeichenkette reservierten Bereichs. n darf nicht größer sein als INT_MAX. Bei n = 0 erfolgt keine Ausgabe.

const char *format

Formatzeichenkette wie bei printf mit KR- oder ANSI-Funktionalität (Beschreibung siehe dort).

Es gibt nur bzgl. der Steuerzeichen für Zwischenraum (\n, \t, etc.) folgenden Unterschied: snprintf trägt in die Ergebniszeichenkette den EBCDIC-Wert des Steuerzeichens ein. Erst bei der Ausgabe in Textdateien werden die Steuerzeichen je nach Art der Textdatei in ihre entsprechende Wirkung umgesetzt (siehe Abschnitt "Zwischenraum“ (Grundbegriffe)).

argumentenliste

Variablen oder Konstanten, deren Werte gemäß den Angaben in den Formatanweisungen für die Ausgabe umgewandelt und formatiert werden sollen.
Wenn die Anzahl der Formatanweisungen nicht mit der Anzahl der Argumente übereinstimmt, gilt Folgendes:
Gibt es mehr Argumente, werden die überzähligen ignoriert. Gibt es weniger Argumente, führt dies zu undefinierten Ergebnissen.

Returnwert

< 0

n > INT_MAX oder Ausgabefehler.

 

= 0 .. n-1

Die Ausgabe konnte vollständig aufbereitet werden. Der Returnwert gibt die Länge der Ausgabe ohne das abschließende NULL-Zeichen an.

 

> n

Die Ausgabe konnte nicht vollständig aufbereitet werden. Der Returnwert gibt die Länge ohne das abschließende NULL-Zeichen an, die eine vollständige Ausgabe benötigen würde.

Hinweise

Sie müssen dafür sorgen, dass n nicht größer ist, als die Länge des Bereichs auf den s zeigt!

Bei der Umwandlung von Gleitkommazahlen rundet snprintf auf die angegebene Genauigkeit.

snprintf nimmt keine Konvertierung von einem Datentyp in einen anderen vor. Soll ein Wert nicht entsprechend seinem Typ ausgegeben werden, muss er explizit konvertiert werden (z.B. mit dem cast-Operator).

Maximale Anzahl der auszugebenden Zeichen
Bei KR-Funktionalität (nur bei C/C++ Versionen kleiner V3.0 vorhanden) können pro snprintf-Aufruf maximal 1400 Zeichen ausgegeben werden, bei ANSI-Funktionalität maximal 1400 Zeichen pro Konversionselement (z.B. %s).

Bei sich überlappenden Speicherbereichen ist das Verhalten undefiniert.

Versuche, nicht initialisierte Variablen oder Variablen nicht entsprechend ihrem Datentyp auszugeben, können zu undefinierten Ergebnissen führen.

Das Verhalten ist undefiniert, wenn in einer Formatanweisung dem Prozentzeichen (%) ein nicht definiertes Formatierungs- bzw. Umwandlungszeichen folgt.

Siehe auch

printf, fprintf, sprintf, putc, putchar, puts, sscanf