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

Автор: Dan Gookin
Издательство: John Wiley & Sons Limited
Серия:
Жанр произведения: Программы
Год издания: 0
isbn: 9783527833382
Скачать книгу
hatten die Computer noch keine so schicken Bildschirme. Damals schrieb printf tatsächlich auf einen Drucker. Aber anstatt den Namen zu ändern, hat man nur den Ort, an dem die Informationen auftauchen, geändert.

      Die Funktion printf kann ziemlich abgedreht sein, aber in der einfachen Betriebsart verwendet sie folgendes Format:

       printf("text");

      printf wird immer kleingeschrieben, das ist nicht verhandelbar. Darauf folgen runde Klammern, die einen Text in Anführungszeichen enthalten. Der schließenden Klammer folgt immer ein Semikolon.

      Der kursiv geschriebene text in dem kleinen Codeabschnitt bedeutet, dass man ihn durch einen beliebigen String ersetzen kann. printf wird diesen Text dann darstellen. Obwohl der Text in Anführungszeichen steht, werden diese nicht am Bildschirm ausgegeben.

      Es gibt weitere Regeln zu printf, die noch nachgereicht werden.

       Ein anderes »printf macht was Lustiges«-Programm

      Die Aufgabe von printf besteht darin, Ausgaben auf dem Bildschirm erscheinen zu lassen. Das haben Sie in Kapitel 2 schon mehrfach gemacht. Was halten Sie davon, dies im folgenden Programm Ende.c noch mal zu tun?

       #include <stdio.h> int main() { printf("Was soll ich beenden?\n"); return 0; }

      Listing 3.1: Name: Ende.c

      Starten Sie Ihren Editor, geben Sie das Programm ein, kompilieren und starten Sie es. Das ist ein Programmierergag, wie er im Buche steht.

      Geben Sie nun in der Eingabeaufforderung die Anweisung zum Starten des Programms Ende.exe ein, indem Sie Ende eingeben. So sieht die Antwort aus:

       Was soll ich beenden?

      

Offensichtlich macht dieses Programm keinen Sinn, wenn man es unter Windows startet … denken Sie daher daran, dass Sie die Beispiele hier im Buch von einer Kommandozeile aus (»DOS-Fenster«) oder unter Code:Blocks starten, dann können Sie auch alles lesen.

       Noch mehr lustige Texte

      Meine Damen und Herren, ich präsentiere Ihnen den folgenden String:

       "Ta da! Ich bin ein String."

      Eine einfache Ansammlung von Buchstaben, Zeichen und Symbolen, umgeben von Anführungszeichen. Packen wir das in runde Klammern ein, damit der String nicht friert, schreiben wir links ein printf hin und rechts ein Semikolon:

       printf("Ta da! Ich bin ein String.");

      Und fertig ist die C-Anweisung, um den genannten String auf dem Bildschirm darzustellen.

      Aber betrachten Sie nun diesen String:

       "Er sagte: "Ta da! Ich bin ein String.""

      Ist das verboten oder was? Es ist immer noch ein String, aber nun mit mehrfachen Anführungszeichen. Acht Striche schwirren um den String. Wie wird er damit fertig?

      Der C-Compiler bestraft Sie nicht dafür, wenn Sie etwas ausprobieren. Fehler sind eine sichere Sache, also lasst uns ein wenig experimentieren.

      Erzeugen Sie das folgende Programm Dblquote.c, das im Wesentlichen wieder nur ein »printf schreibt was«-Programm ist. Das ist bereits das ganze Experiment.

       #include <stdio.h> int main() { printf("Er sagte: "Ta da! Ich bin ein String.""); return 0; }

      Listing 3.2: Name: Dblquote.c

      Tippen Sie den Programmcode genauso ab, wie er da steht. Achten Sie vor allem auf die Anführungszeichen. Speichern Sie die Datei ab und starten Sie das Programm.

       fehlende ')' vor Bezeichner 'Ta'

      oder

       Funktionsaufruf ohne )

      oder

       Syntaxfehler vor "Ta"

      oder

       expected ')' before 'Ta'

      

Der genaue Wortlaut unterscheidet sich von Compiler zu Compiler, aber die Fehlermeldung wird sinngemäß erscheinen.

      Das Problem ist, dass printf einen in Anführungszeichen eingeschlossenen Text benötigt. Der Compiler weiß das. Nach dem zweiten Anführungszeichen, vor dem Wort Ta, erwartet der Compiler etwas anderes, höchstwahrscheinlich die zweite Klammer ) oder eine andere gültige C-Anweisung. Aber davon ist hier nichts zu sehen, also erzeugt er den Fehler. Glück gehabt.

      Offensichtlich gibt es keinen Grund, warum doppelte Anführungszeichen in einem String auftauchen können, sodass der Compiler ins Stolpern gerät. Die Lösung besteht in der Verwendung einer Escape-Sequenz.

      Ein String darf keine doppelten Anführungszeichen oder einige der anderen im nächsten Abschnitt aufgelisteten Zeichen enthalten. Er muss mit einem Anführungszeichen beginnen und mit einem Anführungszeichen enden. Aber mittendrin? Keine Chance.

      Um solche besonderen Zeichen auszugeben, müssen Sie Escape-Sequenzen verwenden; dies ist ein spezieller Weg, um andersartige Zeichen in einem String unterzubringen, ohne das printf zu stören.

      

Wenn Sie mit einer integrierten Entwicklungsumgebung arbeiten, haben Sie den Fehler eventuell bereits bei der Eingabe bemerken können, weil die Textfärbung des Strings nicht mehr korrekt war. Dies ist einer der Vorteile einer integrierten Entwicklungsumgebung. Unser Code::Blocks tut das leider erst nach dem Aufruf des Compilers, noch nicht während der Eingabe.

      In den alten Tagen wäre ein Programmierer auch ohne diese Zeichen ausgekommen. Statt den mehrfachen doppelten Anführungszeichen hätte er einfach zwei Apostrophe verwendet. Einige altehrwürdige Programmierer, die sich mit Escape-Sequenzen nicht auskennen, nutzen solche Tricks immer noch.

       Einige Escape-Sequenzen

      Escape-Sequenzen verwendet man, um einige unzulässige Zeichen in Strings einzubauen. Dazu benutzt man den Backslash \. Sie erreichen das Zeichen mit image+ß. Der Backslash ist immer das erste Zeichen in einer Escape-Sequenz. Wenn printf auf einen Backslash stößt, denkt