C-Bibliotheksfunktionen -vprintf()
C-Standardbibliothek - <stdio.h>
Beschreibung
C-Bibliotheksfunktionenint vprintf(const char *format, va_list arg)Sendet formatierte Ausgabe unter Verwendung einer Parameterliste an den Standardausgabestream stdout.
Deklaration
Nachfolgend ist die Deklaration der Funktion vprintf() angegeben.
int vprintf(const char *format, va_list arg)
Parameter
- format-- Dies ist die Zeichenkette, die den Text enthält, der in den Standardausgabestream stdout geschrieben werden soll. Sie kann eingebettete Format-Tags enthalten, die durch die in den 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 | Dezimal-Gleitkommazahl |
| g | Wählt automatisch die geeignete Darstellung zwischen %e und %f aus. |
| G | Wählt automatisch die geeignete Darstellung zwischen %E und %f aus. |
| o | Oktalzahl mit Vorzeichen |
| s | Zeichenkette |
| u | Vorzeichenlose Dezimal-Ganzzahl |
| x | Vorzeichenlose Hexadezimal-Ganzzahl |
| X | Vorzeichenlose Hexadezimal-Ganzzahl (Großbuchstaben) |
| p | Zeigeradresse |
| n | Keine Ausgabe |
| % | Zeichen |
| Flags | Beschreibung |
|---|---|
| - | Richtet die Ausgabe innerhalb der angegebenen Feldbreite linksbündig aus; standardmäßig ist sie rechtsbündig (siehe den Unterbezeichner width). |
| + | Erzwingt, dass ein Plus- oder Minuszeichen (+ oder -) vor dem Ergebnis erscheint, d. h. positive Zahlen zeigen ein +-Zeichen. Standardmäßig wird nur negativen Zahlen ein -Zeichen vorangestellt. |
| (Leerzeichen) | Wenn kein Vorzeichen geschrieben wird, wird ein Leerzeichen vor den Wert eingefügt. |
| # | In Verbindung mit den Formatbezeichnern o, x oder X wird einem Wert ungleich null jeweils 0, 0x oder 0X vorangestellt. In Verbindung mit e, E und f erzwingt es, dass die Ausgabe einen Dezimalpunkt enthält, selbst wenn keine Ziffern danach folgen. Standardmäßig wird der Dezimalpunkt nicht angezeigt, wenn keine Ziffern nach dem Dezimalpunkt folgen. Bei Verwendung mit g oder G ist das Ergebnis dasselbe wie bei e oder E, aber nachfolgende Nullen werden nicht entfernt. |
| 0 | Setzt Nullen (0) auf die linke Seite der Ziffern, die die Auffüllung bilden, anstelle von Leerzeichen (siehe den Unterbezeichner width). |
| 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 Integer-Spezifizierer (d, i, o, u, x, X): Die Präzision 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 Präzision von 0 bedeutet, dass keine Zeichen geschrieben werden. Für e-, E- und f-Spezifizierer: die Anzahl der Dezimalstellen, die nach dem Dezimalpunkt ausgegeben werden sollen. 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 Präzision angegeben ist, wird standardmäßig 1 verwendet. 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 (gilt nur für Ganzzahl-Formatbezeichner: i, d, o, u, x und X). |
| l | Das Argument wird als long int oder unsigned long int interpretiert, anwendbar auf Integer-Spezifizierer (i, d, o, u, x und X) sowie die Spezifizierer c (für ein Breitzeichen) und s (für eine Breitzeichen-Zeichenkette). |
| L | Das Argument wird als long double interpretiert (gilt nur für Gleitkomma-Formatbezeichner: e, E, f, g und G). |
- arg-- Ein Objekt, das die variable Argumentliste darstellt. Es sollte mit dem in <stdarg> definierten va_start-Makro initialisiert werden.
Rückgabewert
Bei Erfolg gibt sie die Gesamtzahl der geschriebenen Zeichen zurück; andernfalls gibt sie eine negative Zahl zurück.
Beispiel
Das folgende Beispiel demonstriert die Verwendung der Funktion vprintf().
Beispiel
#include <stdio.h>
#include <stdarg.h>
void WriteFrmtd(char *format, ...)
{
va_list args;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
int main ()
{
WriteFrmtd("%d variables Argument\n", 1);
WriteFrmtd("%d variables %s\n", 2, "Argumente");
return(0);
}
#include <stdarg.h>
void WriteFrmtd(char *format, ...)
{
va_list args;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
int main ()
{
WriteFrmtd("%d variables Argument\n", 1);
WriteFrmtd("%d variables %s\n", 2, "Argumente");
return(0);
}
Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:
1 variable argument 2 variable argumentsWeitere Erweiterungen