Читать книгу C für Dummies - Dan Gookin - Страница 94
Zeit für Experimente
ОглавлениеWas ist wichtiger: die Reihenfolge der %s
-Dingerchen oder die Reihenfolge der Variablen – der Argumente – in der printf
-Funktion? Geben Sie auf? Also ich werde es Ihnen nicht verraten, das müssen Sie schon selbst herausfinden.
Um das Dilemma aufzulösen, führen Sie in der Zeile mit dem printf
im Programm Color.c
folgende Änderung durch:
printf("Die Lieblingsfarbe von %s ist %s\n", color, name);
Die Reihenfolge der Variablen ist hier vertauscht, erst color
, dann name
. Starten Sie das Programm, um etwas Derartiges zu sehen:
Die Lieblingsfarbe von Rot ist Marcus
Erkannt? Computer sind doof. Wesentlicher Punkt ist hier also, dass Sie bei mehreren Variablen in der printf
-Funktion auf die Reihenfolge achten müssen. Tja, und das %s
? Es ist halt wirklich nur Platzhalter, mehr nicht.
Wie siehtʼs denn mit dieser Änderung aus:
printf("Die Lieblingsfarbe von %s ist %s\n", name, name);
Die Variable name
gleich zweimal – absolut nicht verboten. printf
benötigt zwei Stringvariablen, damit die zwei Platzhalter %s
gefüllt werden können. Welche, ist ihr egal. So könnte die Ausgabe aussehen:
Die Lieblingsfarbe von Marcus ist Marcus
Tja Marcus, mal wieder zu viel getrunken? Merken Sie sich also, dass Sie sich an die Reihenfolge halten müssen. Genau wie in Ihrer Steuererklärung, da können Sie ja auch nicht die Reihenfolge durcheinanderwerfen (na ja, Sie können schon … aber auch das führt nicht zum gewünschten Erfolg, genau wie hier).
Zum Schluss noch eine kleine Änderung:
printf("Die Lieblingsfarbe von %s ist %s\n", "Katthriya", color);
Statt der Variablen name
wird eine Stringkonstante benutzt. Eine Stringkonstante ist ein einfacher String in Anführungszeichen eingeschlossen. Sie kann sich nie ändern, anders als eine Variable, die alles enthalten kann (sie ist eben konstant und nicht variabel).
Starten Sie das Programm. Es funktioniert immer noch, aber egal, welchen Namen Sie eintippen, der Computer besteht immer auf dem Namen »Katthriya«.
Die Stringkonstante "Katthriya" funktioniert, weil der Platzhalter %s nach einem String sucht. Es spielt keine Rolle, ob es sich um eine Stringvariable oder einen »echten« Textstring handelt. (Natürlich ist der Vorteil von einem Programm, dass man Variablen zur Speicherung von Eingaben benutzen kann. Eine Konstante zu benutzen, ist ein wenig sinnlos, weil der Computer und Sie schon vorher wissen, was ausgegeben wird.)
Der Platzhalter %s in einer printf-Funktion sucht nach einer zugehörigen Stringvariablen und fügt den Inhalt in den dargestellten Text ein.
Für jedes %s im Formatstring einer printf-Funktion benötigen Sie auch eine Stringvariable. Fehlt die Variable, können allerlei ungewünschte Effekte auftreten.
Zusätzlich zu Stringvariablen können Sie auch Stringkonstanten einsetzen, sogenannte Literale. Das ist nicht sonderlich clever, weil man keine Zeit mit dem %s verschwenden muss, wenn man ohnehin schon weiß, was herauskommt (ich musste es hier mal zeigen, sonst müsste ich sofort ins Gefängnis für C-Lehrer gehen).
Achten Sie darauf, dass die Reihenfolge der Variablen stimmt. Das ist besonders wichtig, wenn Sie sowohl numerische als auch Stringvariablen benutzen.
Das Prozentzeichen %
ist ein heiliges Zeichen. Om! Falls Sie ein Prozentzeichen in einer Ausgabe von printf
darstellen wollen, müssen Sie zwei benutzen: %%
. (Raten Sie mal, wie viele Sie angeben müssen, wenn in der Ausgabe von printf
drei Prozentzeichen erscheinen sollen …)