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:
FormatbezeichnerAusgabe
cZeichen
d oder iVorzeichenbehaftete Dezimalganzzahl
eWissenschaftliche Notation unter Verwendung des Zeichens e (Mantisse und Exponent)
EWissenschaftliche Notation unter Verwendung des Zeichens E (Mantisse und Exponent)
fDezimaler Gleitkommawert
gAutomatische Auswahl der geeigneten Darstellung aus %e oder %f
GAutomatische Auswahl der geeigneten Darstellung aus %E oder %f
oVorzeichenbehaftetes Oktal
sZeichenkette
uVorzeichenlose Dezimal-Ganzzahl
xVorzeichenlose Hexadezimal-Ganzzahl
XVorzeichenlose Hexadezimal-Ganzzahl (Großbuchstaben)
pZeigeradresse
nKeine Ausgabe
%Zeichen

FlagsBeschreibung
-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.
0Platzieren Sie Nullen (0) links von der Zahl für die angegebene Auffüllung anstelle von Leerzeichen (siehe den Breiten-Unterbezeichner).

widthBeschreibung
(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.

.precisionBeschreibung
.numberFü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.

lengthBeschreibung
hDas Argument wird als short int oder unsigned short int interpretiert (nur anwendbar auf Ganzzahl-Spezifizierer: i, d, o, u, x und X).
lDas 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).
LDas 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.com

C-Standardbibliothek - <stdio.h>

Weitere Erweiterungen