C für Dummies. Dan Gookin. Читать онлайн. Newlib. NEWLIB.NET

Автор: Dan Gookin
Издательство: John Wiley & Sons Limited
Серия:
Жанр произведения: Программы
Год издания: 0
isbn: 9783527833382
Скачать книгу
\? Das Fragezeichen ? \0 Das »Null«-Byte (das ist eine Null hier) \nnn Ein Zeichenwert als Oktalwert (zur Basis 8) \xnnn Ein Zeichenwert als Hexadezimalzahl (zur Basis 16) \Xnnn wie kleines x \xnnn \x084 kleines »ä« (nur in der Kommandozeile) \x094 kleines »ö« (nur in der Kommandozeile) \x081 kleines »ü« (nur in der Kommandozeile) \x08e großes »Ä« (nur in der Kommandozeile) \x099 großes »Ö« (nur in der Kommandozeile) \x09a großes »Ü« (nur in der Kommandozeile) \x0e1 scharfes »ß« (nur in der Kommandozeile)

      Tabelle 3.1: Escape-Sequenzen von printf

      

Sie sollten diese Seite mit einem dieser berühmten gelben Zettel versehen oder ein Eselsohr reinknicken, denn da sich kaum jemand an so Zeugs erinnert, werden Sie in dieser Tabelle oft nachsehen müssen.

       Das Deluxe-Testprogramm für Escape-Sequenzen

      Damit Sie sehen können, wie einige der Sequenzen arbeiten, erzeugen Sie das neue Programm Printfun.c. Sie werden immer wieder nur die Zeile mit dem printf verändern, um die unterschiedlichen Effekte sehen zu können.

       /* printf Escape-Sequenz Demoprogramm */ #include <stdio.h> int main() { printf("Hier ist die \\a-Sequenz: \a"); getchar(); return 0; }

      Listing 3.12: Name: Printfun.c

       Hier ist die \a-Sequenz:>>grausames BIEP!-Geräusch<<

      Der Lautsprecher piept – lahm, oder? Bach oder Beethoven ist das nicht. Drücken Sie die

-Taste, um das Programm zu beenden.

      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");

      Das \t-Zeichen steht für einen Tabulator, gleichbedeutend mit dem Drücken der image-Taste. Damit kann man sehr gut Tabellen erstellen, da der Text an den gleichen Spalten ausgerichtet wird. Ändern Sie die Zeile wie folgt:

       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: