C-Bibliotheksfunktionen -vsprintf()
C-Standardbibliothek - <stdio.h>
Beschreibung
C-Bibliotheksfunktionenint vsprintf(char *str, const char *format, va_list arg)Sendet eine formatierte Ausgabe mithilfe einer Argumentliste an eine Zeichenkette.
Deklaration
Im Folgenden finden Sie die Deklaration der Funktion vsprintf().
int vsprintf(char *str, const char *format, va_list arg)
Parameter
- str-- Dies ist ein Zeiger auf ein Zeichenarray, das eine C-Zeichenkette speichert.
- format-- Dies ist eine Zeichenkette, die den Text enthält, der in die Zeichenkette str geschrieben werden soll. Sie kann eingebettete Format-Tags enthalten, die durch die in nachfolgenden zusätzlichen Argumenten angegebenen Werte ersetzt und nach Bedarf formatiert werden können. Die Eigenschaften der Format-Tags sind: %[flags][width][.precision][length]specifierDie detaillierte Erklärung lautet wie folgt:
| Formatbezeichner | Ausgabe |
|---|---|
| c | Zeichen |
| d oder i | Vorzeichenbehaftete Dezimalganzzahl |
| e | Wissenschaftliche Notation unter Verwendung des Zeichens e (Mantisse und Exponent) |
| E | Wissenschaftliche Notation unter Verwendung des Zeichens E (Mantisse und Exponent) |
| f | Dezimaler Gleitkommawert |
| g | Automatische Auswahl der geeigneten Darstellung aus %e oder %f |
| G | Automatische Auswahl der geeigneten Darstellung aus %E oder %f |
| o | Vorzeichenbehaftetes Oktal |
| s | Zeichenkette |
| u | Vorzeichenlose Dezimal-Ganzzahl |
| x | Vorzeichenlose Hexadezimal-Ganzzahl |
| X | Vorzeichenlose Hexadezimal-Ganzzahl (Großbuchstaben) |
| p | Zeigeradresse |
| n | Keine Ausgabe |
| % | Zeichen |
| Flags | Beschreibung |
|---|---|
| - | Linksbündig innerhalb der angegebenen Feldbreite; Standard ist rechtsbündig (siehe den Breiten-Unterbezeichner). |
| + | Erzwingt, dass ein Plus- oder Minuszeichen (+ oder -) vor dem Ergebnis angezeigt wird, d. h., vor positiven Zahlen wird ein +-Zeichen angezeigt. Standardmäßig wird nur negativen Zahlen ein -Zeichen vorangestellt. |
| (Leerzeichen) | Wenn kein Vorzeichen angegeben ist, wird ein Leerzeichen vor dem Wert eingefügt. |
| # | In Verbindung mit den Formatbezeichnern o, x oder X wird einem Wert ungleich null jeweils 0, 0x oder 0X vorangestellt. In Kombination mit e, E und f erzwingt es, dass die Ausgabe einen Dezimalpunkt enthält, auch wenn keine Ziffern folgen. Standardmäßig wird der Dezimalpunkt nicht angezeigt, wenn keine Ziffern folgen. Bei Verwendung mit g oder G ist das Ergebnis dasselbe wie bei Verwendung von e oder E, aber nachfolgende Nullen werden nicht entfernt. |
| 0 | Platzieren Sie Nullen (0) links von der Zahl für die angegebene Auffüllung anstelle von Leerzeichen (siehe den Breiten-Unterbezeichner). |
| width | Beschreibung |
|---|---|
| (Zahl) | Die Mindestanzahl der auszugebenden Zeichen. Wenn der Ausgabewert kürzer als diese Anzahl ist, wird das Ergebnis mit Leerzeichen aufgefüllt. Wenn der Ausgabewert länger als diese Anzahl ist, wird das Ergebnis nicht abgeschnitten. |
| * | Die Breite wird nicht im Formatstring angegeben, sondern als zusätzliches ganzzahliges Wertargument bereitgestellt, das vor dem zu formatierenden Argument platziert wird. |
| .precision | Beschreibung |
|---|---|
| .number | Für Ganzzahl-Spezifizierer (d, i, o, u, x, X): Die Genauigkeit gibt die minimale Anzahl der zu schreibenden Ziffern an. Wenn der geschriebene Wert kürzer als diese Zahl ist, wird das Ergebnis mit führenden Nullen aufgefüllt. Wenn der geschriebene Wert länger als diese Zahl ist, wird das Ergebnis nicht abgeschnitten. Eine Genauigkeit von 0 bedeutet, dass keine Zeichen geschrieben werden. Für die Spezifizierer e, E und f: die Anzahl der Ziffern, die nach dem Dezimalpunkt ausgegeben werden. Für die Spezifizierer g und G: die maximale Anzahl signifikanter Ziffern, die ausgegeben werden. Für s: die maximale Anzahl Zeichen, die ausgegeben werden. Standardmäßig werden alle Zeichen ausgegeben, bis das abschließende Nullzeichen angetroffen wird. Für den Typ c: hat keine Auswirkung. Wenn keine Genauigkeit angegeben wird, ist der Standardwert 1. Wenn sie ohne expliziten Wert angegeben wird, wird 0 angenommen. |
| .* | Die Genauigkeit wird nicht in der Formatzeichenfolge angegeben, sondern als zusätzliches ganzzahliges Wertargument bereitgestellt, das vor dem zu formatierenden Argument platziert wird. |
| length | Beschreibung |
|---|---|
| h | Das Argument wird als short int oder unsigned short int interpretiert (nur anwendbar auf Ganzzahl-Spezifizierer: i, d, o, u, x und X). |
| l | Das Argument wird als long int oder unsigned long int interpretiert, anwendbar auf Ganzzahl-Spezifizierer (i, d, o, u, x und X) sowie auf die Spezifizierer c (steht für ein Breitzeichen) und s (steht für eine Breitzeichenkette). |
| L | Das Argument wird als long double interpretiert (nur anwendbar auf Gleitkomma-Spezifizierer: e, E, f, g und G). |
- arg-- Ein Objekt, das eine variable Argumentliste darstellt. Dies sollte durch das in <stdarg> definierte Makro va_start initialisiert werden.
Rückgabewert
Wenn erfolgreich, geben Sie die Gesamtzahl der geschriebenen Zeichen zurück; andernfalls geben Sie eine negative Zahl zurück.
Beispiel
Das folgende Beispiel veranschaulicht die Verwendung der Funktion vsprintf().
#include <stdio.h>
#include <stdarg.h>
char buffer[80];
int vspfunc(char *format, ...)
{
va_list aptr;
int ret;
va_start(aptr, format);
ret = vsprintf(buffer, format, aptr);
va_end(aptr);
return(ret);
}
int main()
{
int i = 5;
float f = 27.0;
char str[50] = "example.com";
vspfunc("%d %f %s", i, f, str);
printf("%s\n", buffer);
return(0);
}
Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:
5 27.000000 example.comWeitere Erweiterungen