Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

vsprintf - Formatierte Ausgabe in eine Zeichenkette

&pagelevel(4)&pagelevel

Definition

#include <stdarg.h>
#include <stdio.h>

int vsprintf(char *s, const char *format, va_list arg);

vsprintf gleicht der Funktion sprintf. Im Unterschied zu sprintf erlaubt vsprintf die Ausgabe von Argumenten, deren Anzahl und Datentyp zum Übersetzungszeitpunkt nicht
bekannt sind.
vsprintf wird innerhalb von Funktionen benutzt, an die der Aufrufer jeweils eine andere Formatzeichenkette sowie andere auszugebende Argumente übergeben kann. Die
Formalparameterliste der Funktionsdefinition sieht dafür eine Formatzeichenkette format und eine variable Argumentenliste ", ..." vor.

vsprintf arbeitet eine Argumentenliste arg mit internen va_arg-Aufrufen sukzessive ab und schreibt die Argumente gemäß der Formatzeichenkette format in die Zeichenkette s.
Die variable Argumentenliste arg muss vor dem Aufruf von vsprintf mit dem Makro va_start initialisiert worden sein.

Parameter

char *s

Zeiger auf die Ergebniszeichenkette. vsprintf schließt die Zeichenkette mit dem Nullbyte (\0) ab.

const char *format

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

Es gibt nur bzgl. der Steuerzeichen für Zwischenraum (\n, \t, etc.) folgenden Unterschied: vsprintf trägt in die Ergebniszeichenkette den 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)).

va_list arg

Zeiger auf die variable Argumentenliste, die mit va_start initialisiert wurde.

Returnwert

Anzahl der in s gespeicherten Zeichen.

Das durch vsprintf generierte abschließende Nullbyte (\0) wird dabei nicht mitgezählt.

Hinweise

vsprintf beginnt in der variablen Argumentenliste immer mit dem ersten Argument. Die Ausgabe ab einem beliebigen Argument lässt sich mit entsprechend vielen va_arg-Aufrufen vor Aufruf der Funktion vsprintf erreichen. Jeder va_arg-Aufruf positioniert die Argumentenliste um ein Argument weiter.

vsprintf ruft nicht das Makro va_end auf. Da vsprintf das Makro va_arg benutzt, ist der Wert von arg nach der Rückkehr unbestimmt.

Bei sich überlappenden Speicherbereichen ist das Verhalten undefiniert.

Beispiel

siehe bei vfprintf

Siehe auch   vfprintf, vprintf , vsnprintf