ein Kapitel zurück                                           ein Kapitel weiter

Nun wollen wir ein weiteres Programm analysieren. Gehen sie genauso vor wie sie es schon im Kapitel zuvor gelernt haben. Schreiben sie das Programm mit einem Texteditor, speichern sie es ab und übersetzen es mit dem Compiler. Hier unser nächster Quellcode :

/*Download:escape.c*/
#include <stdio.h>

int main()
{
printf("Ich gebe ein akustische Signal aus\a");
printf("\nIch bin ein Backspace\b\n");
printf(" Ich springe in die nächste Zeile\n");
printf("Und ich springe 2 Zeilen weiter\n\n");
printf("Ich löse \t einen Zeilenvorschub aus\n");
printf("\n\tC\n\tI\n\tS\n\tT\n\tTOLL\n");
return 0;
}

Also nochmals: Speichern sie das Programm wieder in Ihrem Verzeichnis ihrer Wahl mit der Endung *.c ab. Z.B. Escape.c, wechseln sie wieder in das Verzeichnis wo sie Escape.c abgespeichert haben und übersetzen sie das Programm wieder mit...

gcc -o Escape Escape.c

...für Linux und für MS-DOS...

gcc -o Escape.exe Escape.c

Starten sie das Programm und sehen sie was es ausgibt bzw. wie es ausgegeben wird. Bei mir sieht die Ausgabe folgendermaßen aus...

Ich gebe ein akustische Signal aus
Ich bin ein Backspace
 Ich springe in die nächste Zeile
Und ich springe 2 Zeilen weiter

Ich löse          einen Zeilenvorschub aus

        C
        I
        S
        T
        TOLL


Escape-Sequenzen werden auch Steuerzeichen genannt. Diese Zeichen sind nicht Druckbare Zeichen in char Konstanten. Und wie der Name (Steuerzeichen) und das Programm eben gezeigt hat können sie damit die Ausgabe auf dem Bildschirm beeinflußen.

Steuerzeichen beginnen immer mit einem Backslash \ und der folgenden Konstante. Der Compiler behandelt diese Steuerzeichen als ein einziges Zeichen. Folgende Steuerzeichen können sie dabei verwenden....


\a BEL(bell) akustisches 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 man etwas ausdrucken kann.
\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
\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 Oktalwertes.(z.B. \033 = ESCAPE-Zeichen)
\xhh Ausgabe eines Hexdezimalwertes. (z.B. \xff = 255)


Wollen wir uns mal ein Programm ansehen wie wir außer mit dem Steuerzeichen \n noch einen Zeilenvorschub machen können...

/*Download:newline.c*/
#include <stdio.h>

int main()
{
printf("Darstellung von Newline \\n \n");
printf("Mögliche Ausführung von Newline\n");
printf("Mit Hexdezimaler 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;
}

Die Ausgabe sieht anschließend folgendermaßen aus...

Darstellung von Newline \n
Mögliche Ausführung von Newline
Mit Hexdezimaler Angabe : \xa
Mit Oktaler Wertangabe  : \012
Mit Dezimaler Angabe    : 10
Hallo


Das auch ein Zeilenvorschub bei \xa \012 und 10 gemacht wurde liegt daran, daß alle diese Zeichen intern den Wert 10 darstellen. Und wenn man sich die ASCII-Code-Tabelle ansieht, kann man daran sehen das all die Werte für LF (Line-Forward) stehen. Das bei der letzten printf Anweisung der Text nur bis Hallo ausgegeben wird liegt an \0, womit wir unsere Stringkonstante terminieren (beenden).

Aufgabe:
Schreiben sie das Programm "Hello Wordl" vom vorherigen Kapitel so um, damit es seinen eigenen Quelltext ausgibt. Dies ist mit dem bisher erlernten "printf" und den Escape-Sequenzen zu lösen. Versuchen sie es erst mal selbst bevor sie nach der Auflösung der Aufgabe schauen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf