|
|
||
|
|
||
| .. Beispiel: for-Schleife, TTLclrn() | ||
|
|
||
|
Problemstellung
TTY (TeleType) Ausgabebildschirme so wie
sie bei Terminalprogrammen anzutreffen sind verfügt nur
über begrenzte Möglichkeiten der Cursorsteuerung. Im
Grund kann der Cursor nur eine Zeile tiefer oder an den Anfang
einer Zeile gesetzt werden. Zudem wird der Bildschirm von oben
nach unten mit Zeichen gefüllt, um dann am Bildschirmende
einen Zeilenumbruch zu erzeugen. So etwa funktionierten auch
mechanische Schreibmaschinen oder alte Fernschreiber, der Firma
TeleTYpe Corperation. Möglichkeiten den Cursor beliebig zu
platzieren, oder den Bildschirm zu löschen gibt es nicht.
Aufgabe: Schreiben Sie eine C-Funktion mit dem Namen TTYclrln(), welche es möglich macht, durch die wiederholte Ausgabe der ASCII-Steuerzeichen oder C-Ersatzzeichen NewLine (\n) und Carriage Return (\r) zumindest einige Zeilen Freiraum zwischen zwei Ausgaben zu schaffen, und die bei genügend vielen vorgeschobenen Zeilen, den Ausgabebildschirm 'löscht'. |
||
|
|
||
// TTYclrln.cpp
// ------------ Version 21.04.2008
// Model: beliebig
// char: nicht verwendet
// D.Schwarzer, www.GoBlack.de
// Thema: TTL-clear-Lines. Einige Zeilen auf einem TTY Bildschirm
// freistellen
#include <stdio.h> // für putc(), printf()
#include <conio.h> // für getch(), wenn benötigt
// TTYclrln()
// gibt über eine for-Schleife so oft das Zeichen NewLine aus,
// wie es der Übergabeparameter zeilen vorschreibt. Bei etwa 25
// Zeilenvorschüben sollte der TTY-Bildschirm 'gelöscht' sein.
void TTYclrln(int zeilen)
{
int m;
for(m=0; m<zeilen; m++){
putc('\n',stdout); // neue Zeile
}
putc('\r',stdout); // Cursor an den Zeilenanfang
}
// main()
// Testprogramm für TTYclrln(). Es wird zunächst 25 mal ein Text
// ausgegeben. Dann wird mit TTYclrln dieser Text, bis auf eine
// Zeile vom Bildschirm geschoben.
// Auch hier wird eine for-Schleife zur Textausgabe verwendet. Es
// dürfen bei ihr die geschweiften Klammern {} weggelassen werden,
// denn ihr Körper besteht nur aus einem Befehl.
// Zudem wurde innerhalb des for-Kopfes die Variable n als
// Integer(int) deklariert, definiert und initialisiert.
void main(void)
{
for(int n=0; n<25; n++) {printf ("\r\nZeile von TTYclrln");}
getch();
TTYclrln(24);
getch();
}
|
||
| Hinweis: In TTYclrln() wurden die lokale Variablen int zeile (im Kopf der Funktion und int m im Körper der Funktion deklariert. Sie sind im gesamten Block der Funktion gültig. Dagegen ist die Variable n der main() Funktion nur innerhalb des Blockes der for-Schleife gültig. Sie wurde im Kopf der for-Schleife deklariert und deren Block liegt innerhalb des Blockes von main(). | ||
|
|
.de