C für Dummies. Dan Gookin
Чтение книги онлайн.
Читать онлайн книгу C für Dummies - Dan Gookin страница 39
Wenn das Programm läuft, wartet getchar
auf einen Tastendruck von Ihnen. Das erlaubt es Ihnen, dass Sie sich in aller Ruhe die Ausgaben ansehen können, bevor das Programm endet. getchar
folgt ein leeres Pärchen runde Klammern ()
.
Weitere Tests mit Printfun
Der wahre Test mit Printfun
beginnt erst, wir werden die Escape-Sequenz \\a
beziehungsweise \a
durch andere Sequenzen ersetzen. Fangen wir damit an, dass wir die Zeile mit dem printf
wie folgt ändern:
printf("Hier kommt das \\b Backspace:\b\b\b\b");
Also, speichern, kompilieren, starten.
Der Cursor sitzt nun auf dem a
von Backspace, wenn das Programm läuft. Das liegt daran, dass der Cursor nach links gesetzt wird, aber nichts löscht. Wir haben hier vier \b
, daher wird der Cursor auch vier Positionen nach links gesetzt (falls der Cursor nicht genau dort steht, haben Sie ein Leerzeichen zu viel oder nicht vier Backspaces eingegeben).
Mit dem \n
sind Sie ja vertraut, aber was macht \r
? Wie unterscheidet sich ein Wagenrücklauf von einem Zeilenvorschub? Ändern Sie die betreffende Zeile wieder und schauen Sie sich die Eingabe an:
printf("Hier kommt der \\r Wagenruecklauf: \r");
In der Ausgabe sehen Sie, dass der Cursor unter dem H in der Zeile blinkt. Der Wagenrücklauf versinnbildlicht den Wagenrücklauf einer Schreibmaschine: Man bewegt sich zurück zum Anfang der Zeile. Nur durch den Zeilenvorschub kommt man in die nächste Zeile. (Erinnern Sie sich noch an Schreibmaschinen?)
Das \t
-Zeichen steht für einen Tabulator, gleichbedeutend mit dem Drücken der
printf("Apfel\t\Birne\tEi\n");
Dann fügen Sie direkt danach noch die folgenden Zeilen ein:
printf("1\t2\t3\n");
printf("alpha\tbeta\tgamma\n");
In den printf
-Strings sind jetzt keinerlei Leerzeichen, die Wörter werden alle nur durch Tabs \t
getrennt. Achten Sie darauf, dass in jeder Zeile zwei Tabs und ein Newline \n
vorkommen. Noch ein Hinweis: Gerne schreibt man auch überflüssige Backspaces in die Zeilen, weil man sich leicht mit der Reihenfolge vertut. Wenn Sie fertig sind, starten Sie das Programm, hier die Beispielausgabe:
Apfel Birne Ei
1 2 3
alpha beta gamma
Obwohl die printf
-Anweisungen mit den Tabs \t
ein bisschen wirr aussehen, so ist die Ausgabe doch schön geordnet. Eine Tabelle – hey, nicht schlecht für einen Frischling. Weiter so.
Standardmäßig sind die Tabstopps alle acht Zeichen eingestellt, daher fügt ein \t so viele Leerzeichen in die Ausgabe ein, dass das nächste Zeichen auf dem nächsten Tabstopp liegt. Ich erwähne das, weil viele glauben, dass ein Tab einfach acht Leerzeichen in den String einfügt – das stimmt aber nicht.
Die Zeichen \f und \v erzeugen in der Kommandozeile von Windows nur Sonderzeichen, aber ein Seitenvorschub beziehungsweise Bildschirmlöschen oder ein vertikaler Tabulator werden nicht ausgeführt.
Leider besitzt C keinerlei Funktionen für Kommandos wie »Bildschirm löschen« oder »Schreibe mit einer anderen Farbe«. Je nach Betriebssystem muss man hier auf andere Funktionen zurückgreifen, dazu müssen Sie das Handbuch Ihres Compilers zurate ziehen.
Um die anderen Escape-Sequenzen kümmern wir uns im Moment nicht, Sie lernen später noch, wie diese funktionieren.
Wieder mal die Komplexität des printf-Formats
printf
kann man auch benutzen, um den Inhalt von Variablen darzustellen, was Sie bereits mit Stringvariablen und dem Platzhalter %s
gesehen haben (die lustige Welt der Variablen lernen Sie im nächsten Kapitel kennen). Dazu verwendet printf
folgendes Format:
printf("
format_string
"[,
var
[,…]]);
Der Text folgt immer noch in Anführungszeichen, aber ihm folgt eine Liste aus einer oder mehreren Variablen. Die Variablen werden an den entsprechenden Punkten in den format_string
eingesetzt, wo die Prozentzeichen auftauchen. Diese Prozentzeichen nennt man auch Konvertierungszeichen. Ein Beispiel:
printf("Yep, ich glaube auch, dass %s ein Idiot ist!\n", idiot);
Hier ist der Formatstring der Text Yep, ich glaube auch, dass ____ ein Idiot ist!
. Das %s
-Konvertierungszeichen ist ein Platzhalter, eine Leerstelle, die mit einem String gefüllt werden muss (ich nenne das Platzhalter, aber die Kings der C-Programmierung reden von Konvertierungszeichen). Die Variable dahinter, idiot
, ist eine Stringvariable, deren Inhalt eingefügt wird.
Sie können eine beliebige Anzahl von Konvertierungszeichen in einem Formatstring unterbringen. Aber es muss für jedes Konvertierungszeichen eine zugehörige Variable vorhanden sein; drei %s würden auch drei Stringvariablen erfordern.
Sie können sowohl Strings als auch Zahlen angeben, wenn Sie die richtigen Konvertierungszeichen verwenden. Dazu kommen wir gleich.
Schauen Sie sich die Abbildung in dem Kasten » Geheime Information über die Arbeitsweise von Justify.c« an, wenn Sie wissen wollen, wie das Konvertierungszeichen in einem printf zusammen mit einer Stringvariablen funktioniert.
Die Konvertierungszeichen von printf
Tabelle 3.2 zählt alle Konvertierungszeichen von printf
auf. Bisher haben Sie nur %s
gesehen, einige andere sind für Zahlen und – brrrrr – Mathematik gedacht; Sie werden dies in Kapitel 4 wiederfinden.
Konvertierungszeichen | Stelle das Argument (Variableninhalt) dar als |
---|---|
%c | einzelnes Zeichen |
%d |
Dezimalzahl (int ) mit Vorzeichen
|
%e | Fließkommazahl mit Vorzeichen in Exponentialschreibweise |
%f |
Fließkommazahl mit Vorzeichen (float )
|