21 - 2.5.4 C-Kurzeinführung: Ein-/Ausgabe [ID:15278]
50 von 330 angezeigt

Ja, also zum Abschluss der Einführung in die Programmiersprache C möchte ich jetzt noch einen

Kapitel ansprechen, das eigentlich gar nicht so richtig zur Programmiersprache gehört. Inzwischen

ist es in die Sprachstandards auch aufgenommen worden. Ursprünglich war eine Ausgabe einfach

durch normale Funktionen realisiert. Heutzutage ist es aber so, dass auch die

C-Compiler Wissen über die Schnittstellen dieser Funktionen haben und da auch

gewisse Überprüfungen vornehmen. Es ist aber nach wie vor so, dass diese

eine Ausgabe Funktionen Bestandteil der Standard Funktionsbibliothek, der

sogenannten C-Library sind. Die Schnittstelle zu diesen Funktionen ist

relativ einfach. Die Funktionen sind sehr effizient programmiert. Sie sind

portabel und sie sind auch betriebssystemnah. Und ich möchte jetzt ein paar wesentliche

Bereiche kurz hier einführen. Zum einen das öffnen und schließen von Dateien, dann das

lesen schreiben von einzelnen Zeichen, Zeilen oder auch beliebigen Datenblöcken und formatierte

Einausgabe. Jedes C-Programm erhält beim Start automatisch drei Einausgabe-Kanäle. Die

Standardeingabe, Standard Input, die Standartausgabe, Standard Output und den Fehlerausgabe-Kanal,

Standard Error. Die Standardeingabe ist normalerweise mit der Tastatur verbunden und um ein Dateiende über

die Tastatur zu signalisieren, kann man Ctrl D oder Steuerung D am Anfang einer Zeile eingeben.

Das funktioniert nur am Anfang der Zeile. Wenn man also mitten in der Zeile Steuerung D eingibt,

dann wird das entsprechende Zeichen in der internen Kodierung übergeben und wenn es am Anfang ist,

dann erkennt das Betriebssystem dieses Zeichen. Also das Zeichen wird dann nicht ans Programm

weitergeleitet und das Programm erkennt das Zeichen Steuerung D, sondern das Betriebssystem

erkennt dieses Zeichen und schließt den Eingabe-Kanal, sodass die nächste Lesefunktion dann End of File

liest. Beim Programmaufruf über die Shell ist der Standardeingabe-Kanal auch in der Datei

umlenkbar und das macht man, indem man mit diesem kleiner Zeichen auf der Kommandazeile und einem

Dateinamen eben diese Umleitung der Shell signalisiert und die Shell sorgt dann dafür,

dass diese Eingabe-Datei geöffnet wird und auf dem Standardeingabe-Kanal beim Programm Start

übergeben wird. Und da ist es dann auch so, wenn das Datei Ende erreicht wird, dann liefert das

Betriebssystem beim nächsten Leseaufruf auch dieses End of File. Die Standardeausgabe ist

normalerweise mit dem Bildschirm bzw. mit dem Fenster, in dem das Programm gestartet wurde,

verbunden. Und auch der Standardeausgabe-Kanal ist umlenkbar beim Programmaufruf auf der

Kommandazeile, indem man mit einem größeren Zeichen und einem Dateinamen, das der Shell mitteilt und

die sorgt dann dafür, dass die Ausgabe-Datei geöffnet wird und als Standardeausgabe-Kanal an

die Programmausführung übergeben wird. Und der Standardefehler-Kanal ist getrennt vom Standardeausgabe-Kanal

und das sollte man auch immer auseinanderhalten. Der Standardeausgabe-Kanal wird benutzt, um die

normale Ausgabe des Programms auszugeben und der Standardefehler-Kanal ist normalerweise ebenfalls

mit dem Bildschirm verbunden, ist aber getrennt vom Standardeausgabe-Kanal und wird benutzt, um

Diagnosemeldungen und Meldungen über irgendwelche Dinge, die eben nicht zum normalen Programmablauf

und zum inhaltlichen Output des Programms gehören, auszugeben. Dann gibt es noch die Pipes.

Pipes sind ein Mechanismus, mit dem man den Standardeausgabe-Kanal eines Programms mit

dem Standardeingabe-Kanal eines anderen Programms verbinden kann. Das macht man mit diesem senkrechten

Strich. Also Aufruf ist Proc 1, eventuell natürlich auch mit Aufrufargumenten und dann senkrecht

der Strich und dann Proc 2. Die Umlenkung dieser ganzen Standardein- und Ausgabe-Kanäle ist für

die aufgerufenen Programme völlig unsichtbar. Die lesen einfach von der Standardeingabe und schreiben

auf die Standardeausgabe und ob das eine Datei ist oder die Tastatur ist oder eine Pipe ist, ist

also völlig egal. Wenn allerdings von der Tastatur gelesen wird, dann sorgt das Betriebssystem

normalerweise dafür, dass die Eingabe zeilenweise zwischengespeichert wird und erst beim Zeilenvorschub,

also bei einem Newline-Zeichen, die ganze Zeile am Stück an das Programm übergeben wird. Wenn

Sie also einzelne Zeichen lesen wollen, dann funktioniert das im Normalfall erstmal nicht. Es

gibt dann zwar Möglichkeiten, wie man im Betriebssystem sagen kann, dass es die Zeilen

einzeln hochreichen soll an das Programm, aber im Normalfall, und das ist gerade jetzt bei den

ersten Tests wichtig, nicht dass Sie sich wundern, wenn Sie also auf der Tastatur was eingeben,

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

00:32:47 Min

Aufnahmedatum

2020-05-07

Hochgeladen am

2020-05-15 10:46:02

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen