Nun wollen wir ein weiteres Programm analysieren. Gehen Sie dazu genauso vor, wie Sie es schon im Kapitel 3 gemacht haben. Schreiben sie das Programm mit einem Texteditor, speichern sie es ab und übersetzen es mit dem Compiler.C C++ C/C++ ANSI C Programmieren Steuerzeichen Escapesequenzen Steuerzeichen Escapesequenzen in C - Compiler Programmierung ANSI C Kapitel 4: Steuerzeichen

In (ANSI) C werden zwei Zeichensätze unterschieden. Zum einen der Zeichensatz, der bei Quelldateien verwendet werden darf, und zum anderen ein Ausführungszeichensatz, der beim Ausführen des Programms interpretiert wird.

4.1. Basic-Zeichensatz            zurück  Ein Kapitel tiefer  zum Inhaltsverzeichnis

Folgende Zeichen stehen Ihnen zum Programmieren in der Sprache C zur Verfügung (dies gilt auch für den Ausführungszeichensatz)

Auf manchen PCs (nicht ANSI C) kann auch das Dollarzeichen ($) verwendet werden.

4.2. Ausführungszeichensatz (Steuerzeichen)            zurück  Ein Kapitel höher  zum Inhaltsverzeichnis

Beim Ausführungszeichensatz kommen zu den oben aufgeführten Zeichen noch weitere hinzu, die in diesem Abschnitt beschrieben werden.

Zuvor soll ein weiteres Programm analysiert werden. Dazu wird genauso vorgegangen, wie schon in Kapitel 3: das Listing in einem Texteditor abtippen, abspeichern und anschließend mit dem Compiler übersetzen. Hier das Programmbeispiel zur Demonstration:

#include <stdio.h>

int main()
{
   printf("Ein akkustisches Signal mit : (\\a)\a");
   printf("\nEin Backspace mit : (\\b) | \bx\n");
   printf("Ein Zeilenvorschub mit : (\\t) |\tx");
   printf("\n\tC\n\ti\n\ts\n\tt\n\ttoll\n");
   printf("\t   u\n\t   n\n\t   d\n");
   printf("\t   macht Spass\n");
   return 0;
}

Nach dem Übersetzen und Starten des Programms sieht die Ausgabe folgendermaßen aus:

Abbildung 4.1: Ausgabe des Programms unter einer MS-DOS-Konsole
Abbildung 4.1: Ausgabe des Programms unter einer MS-DOS-Konsole

Hier können Sie die Auswirkungen von Steuerzeichen, auch Escape-Sequenzen genannt, sehen. Diese Zeichen sind nicht druckbare Zeichen in so genannten char-Konstanten. Und wie der Name (Steuerzeichen) besagt und das Programm soeben gezeigt hat, können Sie damit die Ausgabe auf dem Bildschirm beeinflussen.

Steuerzeichen beginnen immer mit einem Backslash (\) und einer folgenden Konstante. Der Compiler behandelt diese Steuerzeichen wie ein einziges Zeichen. Mögliche Steuerzeichen und ihre Bedeutung können aus der folgenden Tabelle entnommen werden:

Steuerzeichen Bedeutung
\a BEL (bell) - akkustisches Warnsignal
\b BS (backspace) - setzt Cursor um eine Position nach links
\f FF(formfeed) - ein Seitenvorschub wird ausgelöst. Wird hauptsächlich bei Programmen verwendet, mit denen Sie etwas ausdrucken können.
\n NL (newline) - Cursor geht zum Anfang der nächsten Zeile
\r CR (carriage return) - Cursor springt zum Anfang der aktuellen Zeile
\t HT (horizontal tab) - Zeilenvorschub zur nächsten horizontalen Tabulatorposition (meistens acht Leerzeichen weiter)
\v VT (vertical tab) - Cursor springt zur nächsten vertikalen Tabulatorposition
\" " wird ausgegeben
\' ' wird ausgegeben
\? ? wird ausgegeben
\\ \ wird ausgegeben
\0 NULL (ist die Endmarkierung eines Strings)
\nnn Ausgabe eines Oktalwerts (z.B. \033 = ESCAPE-Zeichen)
\xhh Ausgabe eines Hexdezimalwerts

Tabelle 4.1: Steuerzeichen (Escape-Sequenzen) in Zeichenkonstanten

Hierzu noch ein Listing, wie Sie außer mit dem Newline-Zeichen (\n) noch einen Zeilenvorschub auslösen könnten:

#include <stdio.h>

int main()
{
   printf("Darstellung von Newline \\n \n");

   printf("Mögliche Ausführung von Newline\n");
   printf("Mit hexadezimaler Angabe : \\xa \xa");
   printf("Mit oktaler Wertangabe   : \\012 \012");
   printf("Mit dezimaler Angabe     : 10 %c",10);
   printf("Hallo\0Ich bin nicht mehr lesbar\n");
   return 0;
}

Dass auch ein Zeilenvorschub bei \xa , \012 und 10 vorgenommen wurde, liegt daran, dass alle diese Zeichen intern den Wert 10 darstellen. Und wenn Sie sich die ASCII-Code-Tabelle (im Anhang) ansehen, können Sie erkennen, dass alle diese Werte in derselben Zeile stehen und das newline-Zeichen darstellen. Dass bei der letzten printf()-Anweisung der Text nur bis "Hallo" ausgegeben wird, liegt am Steuerzeichen '\0', womit eine Stringkonstante terminiert (abgeschlossen) wird. Dazu später mehr.

Weiter mit Kapitel 5: Kommentare in C            zum Inhaltsverzeichnis