C für Dummies. Dan Gookin
Чтение книги онлайн.

Читать онлайн книгу C für Dummies - Dan Gookin страница 29

Название: C für Dummies

Автор: Dan Gookin

Издательство: John Wiley & Sons Limited

Жанр: Программы

Серия:

isbn: 9783527833382

isbn:

СКАЧАТЬ 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 es: »Du liebe Zeit, gleich kommt eine Escape-Sequenz!«, und macht sich bereit, ein sonst verbotenes Zeichen aufzunehmen.

      Schauen wir uns also nun das neue und verbesserte Programm an:

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

      Listing 3.3: Name: Dblquote2.c

      Die einzige Änderung passiert in Zeile 5. Beachten Sie die Escape-Sequenz \" in dem String. Sie taucht zweimal auf, einmal in der Mitte und einmal am Ende. Die äußeren Anführungszeichen bleiben unverändert. Sieht verrückt aus, funktioniert aber.

      Speichern СКАЧАТЬ