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,
Presenters
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