C-Bibliotheksfunktion -printf()

C-Standardbibliothek - <stdio.h>

Beschreibung

C-Bibliotheksfunktionenint printf(const char *format, ...)Formatierte Ausgabe an die Standardausgabe stdout senden.

Das Aufrufformat der Funktion printf() ist:

printf("<格式化字符串>", <参量表>);

Deklaration

Nachfolgend wird die Deklaration der Funktion printf() gezeigt.

int printf(const char *format, ...)

Parameter

  • format-- Dies ist die Zeichenfolge mit dem Text, der auf die Standardausgabe stdout geschrieben werden soll. Sie kann eingebettete Format-Tags enthalten, die durch die in den folgenden zusätzlichen Argumenten angegebenen Werte ersetzt und nach Bedarf formatiert werden können. Die Attribute der Format-Tags sind: %[flags][width][.precision][length]specifierDie detaillierte Erklärung lautet wie folgt:

Formatzeichen Bedeutung
a, A

Gibt Gleitkommazahlen in hexadezimaler Form aus (neu in C99).

Beispielprintf("pi=%a\n", 3.14);Ausgabepi=0x1.91eb86p+1。

d Gibt vorzeichenbehaftete Ganzzahlen in dezimaler Form aus (kein Vorzeichen bei positiven Zahlen).
o Gibt vorzeichenlose Ganzzahlen in oktaler Form aus (ohne das Präfix 0).
x,X Gibt vorzeichenlose Ganzzahlen in hexadezimaler Form aus (ohne das Präfix 0x).
u Gibt eine vorzeichenlose Ganzzahl in dezimaler Form aus
f Gibt reelle Zahlen mit einfacher/doppelter Genauigkeit in Dezimalbruchform aus
e,E Gibt reelle Zahlen mit einfacher/doppelter Genauigkeit in Exponentialform aus
g,G Gibt reelle Zahlen mit einfacher oder doppelter Genauigkeit unter Verwendung der kürzeren Ausgabebreite von %f oder %e aus.
c Gibt ein einzelnes Zeichen aus
s Gibt eine Zeichenkette aus
p Gibt eine Zeigeradresse aus
lu 32-Bit-Ganzzahl ohne Vorzeichen
llu 64-Bit-Ganzzahl ohne Vorzeichen

FlagsBeschreibung
-Linksbündige Ausrichtung innerhalb der angegebenen Feldbreite; standardmäßig ist die Ausrichtung rechtsbündig (siehe Breiten-Unterbezeichner).
+Erzwingt, dass ein Plus- oder Minuszeichen (+ oder -) vor dem Ergebnis angezeigt wird, d. h., positive Zahlen zeigen ein +-Zeichen davor. Standardmäßig wird nur bei negativen Zahlen ein -Zeichen davor angezeigt.
LeerzeichenWenn kein Vorzeichen angegeben ist, wird ein Leerzeichen vor dem Wert eingefügt.
#Bei Verwendung mit den Spezifizierern o, x oder X werden Werte ungleich null mit 0, 0x bzw. 0X vorangestellt.
Bei Verwendung 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 nachfolgenden Ziffern vorhanden sind.
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, um die angegebene Auffüllung zu füllen, statt Leerzeichen (siehe den Breiten-Unterbezeichner).

widthBeschreibung
(Zahl)Die minimale Anzahl auszugebender 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 Argument mit ganzzahligem Wert übergeben, 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 Anzahl ist, wird das Ergebnis mit führenden Nullen aufgefüllt. Wenn der geschriebene Wert länger als diese Anzahl 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 nach dem Dezimalpunkt auszugebenden Ziffern.
Für die Spezifizierer g und G: die maximale Anzahl der auszugebenden signifikanten Ziffern.
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 ist, ist der Standardwert 1. Wenn sie ohne expliziten Wert angegeben wird, wird 0 angenommen.
.*Die Genauigkeit wird nicht im Formatstring angegeben, sondern als zusätzliches Argument mit ganzzahligem Wert übergeben, das vor dem zu formatierenden Argument platziert wird.

lengthBeschreibung
hDas Argument wird als kurze Ganzzahl oder vorzeichenlose kurze Ganzzahl interpretiert (gilt nur für die Ganzzahl-Spezifizierer: i, d, o, u, x und X).
lDas Argument wird als long integer oder unsigned long integer interpretiert, anwendbar auf die Integer-Spezifizierer (i, d, o, u, x und X) sowie auf die Spezifizierer c (bedeutet ein breites Zeichen) und s (bedeutet eine Zeichenkette aus breiten Zeichen).
LDas Argument wird als long double interpretiert (nur anwendbar auf die Gleitkomma-Spezifizierer: e, E, f, g und G).
  • Zusätzliche Argumente-- Abhängig von der Formatzeichenfolge kann die Funktion eine Reihe zusätzlicher Argumente erfordern, von denen jedes einen einzufügenden Wert enthält, der jedes im Formatargument angegebene %-Tag ersetzt. Die Anzahl der Argumente sollte mit der Anzahl der %-Tags übereinstimmen.

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 printf()-Funktion.

Beispiel

#include <stdio.h> int main () { int ch; for( ch = 75 ; ch <= 100; ch++ ) { printf("ASCII value = %d, character = %c\n", ch , ch ); } return(0); }

Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:

ASCII 值 = 75, 字符 = K
ASCII 值 = 76, 字符 = L
ASCII 值 = 77, 字符 = M
ASCII 值 = 78, 字符 = N
ASCII 值 = 79, 字符 = O
ASCII 值 = 80, 字符 = P
ASCII 值 = 81, 字符 = Q
ASCII 值 = 82, 字符 = R
ASCII 值 = 83, 字符 = S
ASCII 值 = 84, 字符 = T
ASCII 值 = 85, 字符 = U
ASCII 值 = 86, 字符 = V
ASCII 值 = 87, 字符 = W
ASCII 值 = 88, 字符 = X
ASCII 值 = 89, 字符 = Y
ASCII 值 = 90, 字符 = Z
ASCII 值 = 91, 字符 = [
ASCII 值 = 92, 字符 = \
ASCII 值 = 93, 字符 = ]
ASCII 值 = 94, 字符 = ^
ASCII 值 = 95, 字符 = _
ASCII 值 = 96, 字符 = `
ASCII 值 = 97, 字符 = a
ASCII 值 = 98, 字符 = b
ASCII 值 = 99, 字符 = c
ASCII 值 = 100, 字符 = d

Das folgende Beispiel gibt verschiedene formatierte Daten aus:

Beispiel

#include <stdio.h> int main() { char ch = 'A'; char str[20] = "www.example.com"; float flt = 10.234; int no = 150; double dbl = 20.123456; printf("Zeichen ist %c\n", ch); printf("Zeichenkette ist %s\n" , str); printf("Gleitkommazahl ist %f\n", flt); printf("Ganzzahl ist %d\n" , no); printf("Wert mit doppelter Genauigkeit ist %lf\n", dbl); printf("Oktalwert ist %o\n", no); printf("Hexadezimalwert ist %x\n", no); return 0; }

Das Ausgabeergebnis der Ausführung ist:

字符为 A 
字符串为 www.example.com 
浮点数为 10.234000 
整数为 150
双精度值为 20.123456 
八进制值为 226 
十六进制值为 96 

Formatbezeichner

  • %dVorzeichenbehaftete Dezimalganzzahl
  • %uVorzeichenlose Dezimal-Ganzzahl
  • %fGleitkommazahl
  • %sString
  • %cEinzelzeichen
  • %pZeigerwert
  • %eGleitkommazahl in Exponentialform
  • %x, %XVorzeichenlose Ganzzahl in hexadezimaler Darstellung
  • %oVorzeichenlose Ganzzahl in oktaler Darstellung
  • %gGibt den Wert mit dem Format (%e oder %f) aus, das die kürzere Ausgabelänge ergibt.
  • %pAusgabe-Adressbezeichner
  • %lu32-Bit-Ganzzahl ohne Vorzeichen
  • %llu64-Bit-Ganzzahl ohne Vorzeichen
  • %%Gibt das Prozentzeichen selbst aus.

Zusätzlich zu den Formatbezeichnern unterstützt die Funktion printf() auch Flags und Optionen zur Steuerung von Ausgabegenauigkeit, Breite, Füllzeichen, Ausrichtung usw. Zum Beispiel:

  • %-10s: eine linksbündige Zeichenkette mit einer Breite von 10;
  • %5.2f: eine rechtsbündige Gleitkommazahl mit einer Breite von 5 und zwei Nachkommastellen;
  • %#x: gibt eine hexadezimale Zahl mit dem Präfix 0x aus.

Die Funktion printf() unterstützt auch Argumentlisten variabler Länge, die durch eine Ellipse...gekennzeichnet werden können, um mehrere auszugebende Werte anzugeben. Innerhalb der Funktion können die Makros va_start() und va_end() verwendet werden, um auf die Werte in der Argumentliste variabler Länge zuzugreifen. Zum Beispiel:

Beispiel

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

void print_values(int count, ...)
{
    va_list args;
    va_start(args, count);
    for (int i = 0; i < count; i++) {
        printf("%d ", va_arg(args, int));
    }
    va_end(args);
}

int main()
{
    print_values(3, 1, 2, 3); // Ausgabe "1 2 3"
    return 0;
}

Das Ausgabeergebnis der Ausführung ist:

1 2 3

C-Standardbibliothek - <stdio.h>

Weitere Erweiterungen