Wie mit printf () in C-Programmierung auf Format

Die beliebteste Ausgangsfunktion in der C-Programmierung hat (zu printf). Es ist locker. Es ist eine der ersten Funktionen, die Sie in C lernen und als eine der komplexesten, es ist eine der Funktionen, die niemand jemals vollständig kennt.

Menu

Die Macht in printf () liegt in der Format-String. Dieser Text kann mit Klartext, Escape-Sequenzen und die Umwandlung Zeichen verpackt werden, was die kleinen Prozent goobers sind die Werte in die Textausgabe einzufügen. Es ist diese Umwandlung Zeichen, die printf () seine wirkliche Macht geben, und sie sind auch eine der am wenigsten die Funktion verstanden Aspekte.

Wie Gleitkomma zu formatieren

Sie können mehr als die Basis% f Umwandlungszeichen verwenden Fließkommawerte zu formatieren. In der Tat, hier ist ein großartiges Format, das Sie in der Funktion printf () der Formatierung von Text verwenden können:

%w.pf

Das w legt die maximale Breite der gesamten Zahl der Dezimalstelle inklusive. Das p setzt Präzision. Beispielsweise:

printf ( "% 9.2f", 12.45) -

Diese Aussage gibt vier Räume und dann 12,45. Diese vier Bereiche sind zuzüglich 12,45 (fünf Zeichen insgesamt) gleich der 9 in der Breite. Nur zwei Werte sind rechts vom Komma dargestellt, da 0,2 in% f Umwandlung Zeichen verwendet.

Es ist möglich, den Genauigkeitswert angeben, ohne eine Breite einstellen, aber es muss von dem Komma vorangestellt werden, wie es in% .2f (Prozent punkt zwei F). Siehe Die printf () Gleitkommaformatierung Gamut.

DAS Printf () Gleitkommaformatierung GAMUT

# include int main () {float sample1 = 34,5-float sample2 = 12,3456789-printf ( "%% 9.1f =% 9.1f n", sample1) -printf ( "%% 8.1f =% 8.1f n", sample1) -printf ( "%% 7.1f =% 7.1f n", sample1) -printf ( "%% 6.1f =% 6.1f n", sample1) -printf ( "%% 5.1f =% 5.1f n ", sample1) -printf (" %% 4.1f =% 4.1f n ", sample1) -printf (" %% 3.1f =% 3.1f n ", sample1) -printf (" %% 2.1f =% 2.1f n ", sample1) -printf (" %% 1.1f =% 1.1f n ", sample1) -printf (" %% 9.1f =% 9.1f n ", sample2) -printf (" %% 9.2f =% 9.2f n ", sample2) -printf (" %% 9.3f =% 9.3f n ", sample2) -printf (" %% 9.4f =% 9.4f n ", sample2) -printf ( "%% 9.5f =% 9.5f n", sample2) -printf ( "%% 9.6f =% 9.6f n", sample2) -printf ( "%% 9.7f =% 9.7f n "sample2) -printf (" %% 9.6f =% 9.6f n ", sample2) -printf (" %% 9.7f =% 9.7f n ", sample2) -printf (" %% 9.8f =% 9.8f n ", sample2) -return (0) -}

Übung 1: Geben Sie den Quellcode aus dem printf () Gleitkommaformatierung Gamut in Ihren Editor. Es sieht aus wie eine Menge Arbeit, aber man kann mit einer Menge von copy-and-paste den Code schnell erstellen.

Die Ausgabe von Übung 1 hilft, die Breite und die Präzision Teile der% f Umwandlung Charakter Ausgang illustrieren:

% 9.1f = 34,5% 8.1f = 34,5% 7.1f = 34,5% 6.1f = 34,5% 5.1f = 34,5% 4.1f = 34,5% 3.1f = 34,5% 2.1f = 34,5% 1.1f = 34,5% 9.1f = 12,3 % 9.2f = 12,35% 9.3f = 12,346% 9.4f = 12,3457% 9.5f = 12,34568% 9.6f = 12,345679% 9.7f = 12,3456793% 9.8f = 12,34567928

Aus dieser Ausgabe können Sie sehen, wie die Breite Wert "Pads" die Zahlen auf der linken Seite. Da die Breite Wert abnimmt, nimmt auch die Polsterung. Wenn jedoch die festgelegte Breite breiter als der ursprüngliche Wert ist, nonsense wird angezeigt, wie durch die letzten zwei Zeilen von Ausgangs gezeigt. Das ist, weil die Breite über die Grenze einfacher Genauigkeit ist.

Einstellen der Ausgabebreite

Das wOption Ausgabebreite verwendet wird, um alle Umwandlungs Zeichen verfügbar, nicht nur f%. Das Breite ist die minimale Menge an Speicherplatz für die Ausgabe bereitgestellt. Wenn der Ausgang kleiner als die Breite ist, es ist richtig, gerechtfertigt. Wenn der Ausgang größer als die Breite ist, ist die Breite ignoriert. Sehen Sie mit der Breite Messing.

MESSING mit der Breite

# include int main () {printf ( "%% 15s =% 15s n", "Hallo") - printf ( "%% 14s =% 14s n", "Hallo") - printf ( "%% 13s = % 13s n "," Hallo ") - printf (" %% 12s =% 12s n "," Hallo ") - printf (" %% 11s =% 11s n "," Hallo ") - printf (" %% 10s =% 10s n "," Hallo ") - printf (" %% 9s =% 9s n "," Hallo ") - printf (" %% 8s =% 8s n "," Hallo ") -printf ( "%% 7s =% 7s n", "Hallo") - printf ( "%% 6s =% 6s n", "Hallo") - printf ( "%% 5s =% 5s n", "Hallo") - printf ( "%% 4s =% 4s n", "Hallo") - return (0) -}

Übung 2: Geben Sie den Quellcode mit der Breite in ein neues Projekt aus Messing. Erstellen Sie und führen Sie den Ausgang zu untersuchen, die wie folgt aussieht:

% 15s = Hallo% 14s = Hallo% 13s = Hallo% 12s = Hallo% 11s = Hallo% 10s = Hallo% 9s = Hallo% 8s = Hallo% 7s = Hallo% 6s = Hallo% 5s = Hallo% 4s = hallo

Wie bei der Breite Option für Gleitkommazahlen (siehe die vorhergehenden Bewegung), ist der Raum auf der linken Seite aufgefüllt, wenn die Breite größer ist als die Zeichenfolge angezeigt. Aber wenn die Breite kleiner ist als die Länge der Zeichenfolge, wird die vollständige Zeichenfolge weiterhin angezeigt.

Wenn der Breitenwert für eine ganze Zahl angegeben wird, kann sie nach rechts verwendet werden, die Ausgabe auszurichten. Beispielsweise:

printf ( "% 4d", Wert) -

Diese Aussage stellt sicher, dass der Ausgang für Wert ist richtig, gerechtfertigt und mindestens vier Zeichen breit. Wenn der Wert weniger als vier Zeichen breit ist, ist es mit Leerzeichen auf der linken Seite aufgefüllt. Das heißt, es sei denn, Sie eine 0 in dort bleiben:

printf ( "% 04d", Wert) -

In diesem Fall wird die Funktion printf () Pads die Breite mit Nullen breit alles vier Zeichen zu halten.

Wie auszurichten Ausgang

Der Breitenwert in der Umwandlungszeichen fluchtet Ausgangs nach rechts, bekannt als Recht Rechtfertigung. Aber nicht alles in Ordnung ist. Manchmal wollen Sie links Rechtfertigung. Um die Polsterung an der rechten Seite des Ausgangs erzwingen, fügen Sie ein Minuszeichen vor dem Breitenwert in der Umwandlungszeichen s%. Beispielsweise:

printf ( "% - 15s", string) -

Diese Aussage zeigt den Text in dem Feld Zeichenfolge nach links gerechtfertigt. Wenn Zeichenkette kürzer als 15 Zeichen ist, werden Leerzeichen nach rechts versetzt.

Der Source-Code in Treffen in der Mitte zeigt zwei Strings. Die erste ist links, in einem Bereich von variierenden Breiten gerechtfertigt. Die Breite wird kleiner mit jedem progressiven printf () Erklärung.

Treffen in der Mitte

# include int main () {printf ( "% - 9s mich n", "Treffen") - printf ( "% - 8s me n", "Treffen") - printf ( "% - 7s mich n", "treffen") - printf ( "% - 6s mich n", "treffen") - printf ( "% - 5s mich n", "treffen") - printf ( "% - 4s mich n", "treffen -return ") (0) -}

Übung 3: Kopieren Sie den Code Form Treffen in der Mitte in Ihren Editor. Erstellen Sie das Programm und führen Sie es um die Ausrichtung Ausgang gezeigt, zu sehen.

Übung 4: Schreiben Sie ein Programm, das die Vor- und Nachnamen der ersten vier Präsidenten der Vereinigten Staaten zeigt. Speichern Sie die Namen in einem mehrdimensionalen char-Array. Die Namen müssen bis zur Linie, so dass die Ausgabe wie folgt aussieht:

George WashingtonJohn AdamsThomas JeffersonJames Monroe

Menü