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 mit 15 Zeichen darstellen soll. Der darzustellende String wird als Nächstes angegeben, hier rechts\n
.
Wenn die 15 Leerzeichen als Punkte dargestellt werden, sieht man, wie printf
den Text rechts darstellt:
………rechts (und dann eine neue Zeile)
Würde man den String rechts
durch Limonade
ersetzen, würde man die folgende Zeile sehen:
…….Limonade (und dann eine neue Zeile)
Der Text ist immer noch rechtsbündig. (Übrigens: Wäre der String länger als 15 Zeichen, würde er nicht abgeschnitten.)
Die nächste Zeile sieht genauso aus, aber vor der 15
steht ein Minuszeichen:
printf("%-15s", "links\n");
Das Minus –
steht für linksbündige Ausgabe.
Dieser ganze Kram mit den Konvertierungen kann reichlich kompliziert werden, aber seien Sie sicher, dass sich nur wenige Leute das merken. Sogar fortgeschrittene C-Programmierer müssen in der Sprachreferenz nachschlagen und mit einigen Tests ausprobieren, wie die eine oder andere Formatierung wirkt. Die meiste Zeit werden Sie mit so etwas nicht belastet, also keine Panik.
scanf – lassen Sie Ihren Scanner trotzdem aus!
Ausgabe ohne Eingabe ist wie Sonne ohne Mond, Bier ohne Schaum oder ein Fisch ohne Fahrrad. Stellen Sie sich vor – das ist der schrecklichste Gedanke: Ohne Eingabe sitzt der Computer einfach da und redet die ganze Zeit zu Ihnen, ohne zuzuhören. Grauenhafte Vorstellung.
C hat zahlreiche Werkzeuge, damit der Computer Ihnen zuhört. Dazu gehört die geheimnisvolle scanf
-Funktion, die benutzt wird, um einen Text von der Tastatur einzulesen und in der Geborgenheit einer warmen und weichen Stringvariablen abzulegen.
scanf
ist eine Funktion wie printf
. Ihre Aufgabe besteht darin, Text von der Tastatur einzulesen.
scanf
kann auch Zahlen einlesen und andere erstaunliche Dinge tun, aber in diesem Abschnitt beschränken wir uns auf das Einlesen von Strings.
Ebenso wie das f in printf
bedeutet das f in scanf
»formatiert«. Sie können scanf
benutzen, um eine speziell formatierte Textpassage von der Tastatur einzulesen. Aber in diesem Abschnitt wird nur eine gewöhnliche Textzeile eingelesen, nichts Besonderes also.
Es gibt bessere Wege, um Texte von Tastatur einzulesen als über scanf
– dazu kommen wir gleich.
Damit scanf
funktioniert, brauchen Sie Folgendes: zum einen Speicherplatz, um den eingegebenen Text abzulegen, und zum anderen natürlich die Funktion scanf
.
Der Speicherplatz wird Stringvariable genannt. String bedeutet eine Folge von Zeichen – Text. Variable bedeutet, dass der Text nicht fest ist, sondern verändert werden kann. Eine Stringvariable ist ein Lagerort für Texte in Ihrem Programm. (Variablen werden ausführlich im nächsten Kapitel erklärt.)
Das Schlüsselwort char (Definition einer Stringvariablen)
Um eine Variable zu erstellen, benötigen Sie ein C-Schlüsselwort, das dem Compiler mitteilt: »Hier will ich eine Variable haben.« Für Texte ist dies das Schlüsselwort char
:
char var[laenge];
Dem char
folgt ein Leerzeichen – oder auch ein Tabulator – und dann der Name der Variablen, var . Für Strings (also Texte mit mehr als einem Zeichen) muss die Maximallänge laenge des Strings in den eckigen Klammern angegeben werden.
Das var ist der Name der Variablen. Regeln und Beschränkungen für die Namensgebung von Variablen werden im nächsten Kapitel vorgestellt.
laenge teilt die Anzahl Zeichen mit, die der String enthalten kann. Wenn Sie also nach einem Vornamen fragen, nimmt man zum Beispiel an, dass die meisten Vornamen weniger als 20 Zeichen umfassen.
Der schließenden eckigen Klammer ]
folgt ein Semikolon, da es sich (wieder mal) um eine vollständige Anweisung der Sprache C handelt.
Und dann brauchen wir die Funktion scanf
, deren Format ähnlich dem fortgeschrittenen Format der printf
-Funktion ist.
Die Funktion scanf (Einlesen eines Strings)
Die scanf
-Funktion wird benutzt, um Informationen von der Tastatur einzulesen. In der gezeigten Form wird scanf
genutzt, um eine Textzeile einzulesen:
scanf("%s", var);
Genau wie bei der Funktion printf
folgt der Funktion scanf
allerlei Zeugs in Klammern. Aber anders als printf
gibt scanf
den Text in den Anführungszeichen nicht auf dem Bildschirm aus.
Zuerst kommt ein Formatstring, der scanf
mitteilt, auf welche Art Text zu warten ist. Wenn mit %s
eine Textzeile eingelesen werden soll, wird %s
in Anführungszeichen hingeschrieben. Diese Zeichen sagen scanf
, dass es auf eine Textzeile warten soll, die mit Drücken der
-Taste abgeschlossen wird.
Читать дальше