C für Dummies. Dan Gookin
verbotenes Zeichen aufzunehmen.
Schauen wir uns also nun das neue und verbesserte Programm an:
#include <stdio.h>
int main()
{
printf("Er sagte: \"Ta da! Ich bin ein String.\"");
return 0;
}
Listing 3.3: Name: Dblquote2.c
Die einzige Änderung passiert in Zeile 5. Beachten Sie die Escape-Sequenz \"
in dem String. Sie taucht zweimal auf, einmal in der Mitte und einmal am Ende. Die äußeren Anführungszeichen bleiben unverändert. Sieht verrückt aus, funktioniert aber.
Speichern Sie das Programm Dblquote2.c
, kompilieren und starten Sie es. Diesmal sollte es funktionieren und den folgenden Text ausgeben:
Er sagte: "Ta da! Ich bin ein String."
Die Escape-Sequenz \" erzeugt in einem String das Anführungszeichen.
Eine andere nützliche Escape-Sequenz kennen Sie von Kapitel 2: \n. Sie erzeugt eine neue Zeile in einem String, so als wenn Sie drücken würden.
Alle Escape-Sequenzen beginnen mit einem Backslash \. Wie stellt man also den Backslash selbst in einem String dar? Man nimmt zwei: \\ ist die Escape-Sequenz, die einen – Achtung! – nur einen \ in einem String einfügt.
Eine Escape-Sequenz kann überall in einem String auftauchen: am Anfang, in der Mitte, am Ende. Wo es gerade benötigt wird.
Weitere Escape-Sequenzen werden in Tabelle 3.1 weiter hinten in diesem Kapitel aufgelistet.
Das f steht für formatiert
Die Funktion heißt aus einem bestimmten Grund printf
. Das f
bedeutet etwas, es steht nicht etwa für Funktion, sondern es steht für formatiert. Der Vorteil von printf
im Vergleich zu anderen Ausgabefunktionen in C liegt darin, dass die Ausgabe formatiert sein kann.
Spätere Kapitel führen Sie noch in die Formatierungsaspekte von printf
ein, im Moment kein Grund zur Sorge, aber ich muss Ihnen das nun zeigen. Denn wenn printf
für Formatierungen benutzt wird, bekommt es ein anderes Aussehen.
Weitere Informationen darüber, was Variablen sind und was sie tun, erhalten Sie in Kapitel 4.
Die Funktion printf
Ja, die printf
-Funktion stellt immer noch Ausgaben auf dem Bildschirm dar. Aber der dargestellte String kann auch ein Formatstring sein, also einer, der das Format der Ausgabe steuern kann:
printf("FormatString"[, var[, …]]);
Was in den Anführungszeichen erscheint, ist in Wirklichkeit ein Formatstring. Es ist immer noch ein Text, der bei der Ausgabe geschrieben wird. Im String eingemischt sind verschiedene Konvertierungszeichen, spezielle »Platzhalter«, die printf
sagen, wie es seine Ausgaben formatieren muss.
Die zusätzlichen Dinge, die in der obigen Codezeile in den eckigen Klammern stehen, heißen Argumente. Das Argument heißt var, kurz für Variable. printf
kann benutzt werden, um den Inhalt einer oder mehrerer Variablen darzustellen. Dies macht man, indem man bestimmte Konvertierungszeichen im FormatString
benutzt. Die Abbildung verdeutlicht dies sehr schön.
Das [, …]
bedeutet, dass man eine beliebige Anzahl von Variablen in einer einzigen printf
-Funktion anfügen kann (aber vor der schließenden Klammer). Auf jeden Fall muss für jede Variable in FormatString
ein zugehöriges Konvertierungszeichen stehen. Diese müssen zueinander passen, oder Sie erhalten einen Fehler bei der Kompilierung oder später im lauffähigen Programm.
Richtʼ Euch!
Zum jetzigen Zeitpunkt besteht keine Notwendigkeit, tiefer in die kalten und dunklen Gewässer der printf
-Funktion einzusteigen – Argumente und Variablen.
Allerdings, vielleicht ist es auch an der Zeit für ein Programm, das die Möglichkeiten der printf
-Formatierungen zeigt. Dieses Programm ist Justify.c
, dessen Inhalt unwichtig ist, aber dessen Ausgabe Sie ungläubig bestaunen dürfen. Justify.c
stellt zwei Strings dar: rechts
wird rechtsbündig ausgerichtet, links
wird linksbündig ausgerichtet. Das wird mehr Sinn machen, wenn Sie sich die Ausgabe des Programms ansehen.
#include <stdio.h>
int main()
{
printf("%15s", "rechts\n");
printf("%-15s", "links\n");
return 0;
}
Listing 3.4: Name: Justify.c
Geben Sie den Quelltext in Ihrem Editor ein. In der ersten printf
-Anweisung ist der erste String ein %15s
(Prozent, 15
, kleines s
). In der zweiten printf
-Anweisung sieht das fast genauso aus, aber da steht vor der 15
noch ein Minuszeichen -
.
Prüfen Sie Ihre Eingaben gründlich. Starten Sie dann das Programm. Die Ausgabe sollte wie folgt aussehen:
rechts
links
Das Wort rechts
ist 15 Zeichen weiter rechts rechtsbündig angeordnet, links
ist linksbündig angeordnet. Das wurde durch den Formatstring %15s
bewirkt. Das %15s
ist nicht sichtbar, stattdessen hat es bestimmt, wie das Wort rechts
angeordnet wurde. Dies zeigt die Möglichkeiten von printf
an einem lebenden Beispiel.
Im Programm Justify.c
sieht man nur ein wenig von dem, was printf
kann. Die Funktion kann außerdem auch Zahlen in einer bemerkenswerten Weise darstellen, aber das führt im Moment noch zu weit.
Haben Sie an die Semikolons am Ende von printf gedacht? Vergessen? Das ist ein typischer Fehler.
Die Variablen var nennt man »Argumente«. Der Begriff Argument bedeutet eine andere Option, etwas, das von der Sprache C benötigt wird.
Weitere Details zur Formatierung von printf werden weiter hinten in diesem Kapitel vorgestellt. Dennoch taucht dieses Buch nicht in die Tiefen der Formatierung ein, wie man sie zum Beispiel beim Programm Justify.c sehen kann. Schauen Sie bei Interesse doch in Ihrer C-Sprachreferenz zu printf nach; dort finden Sie weitere Details.
Geheime Information über die Arbeitsweise von Justify.c
Das Programm Justify.c
besteht aus zwei printf
-Anweisungen, die spezielle Formatierungsanweisungen benutzen, um die Ausgabe zu formatieren.
printf("%15s", "rechts\n");
Der »Steuerstring« wird zuerst angegeben, er teilt printf
mit, was darzustellen ist. Zuvor hat printf
einfach Texte ausgegeben. Aber das Prozentzeichen hat eine spezielle Bedeutung für printf
. Es deutet auf ein Konvertierungszeichen – ich nenne das »Platzhalter« –, das printf
sagt, wie die Ausgabe zu formatieren ist. Hier ist das Konvertierungszeichen ein s
, was für String steht. Die 15
sagt printf
, dass es den String genau