Umgebung, Ein- und Ausgabe in C
Ein C-Programm braucht eine Aufrufumgebung. Diese Umgebung wird unter UNIX durch den Kommandointerpreter ("Shell") bereitgestellt. Bei DOS wird beim Linken ein Startprogramm zu jedem C-Programm hinzugegeben.
Aufgaben der Programmumgebung
Die Programmumgebung stellt Dienstleistungen bereit, die innerhalb eines C-Programmes erwartet werden. Dazu gehören:
- Aufbereitung der Aufrufparameter in einer standardisierten Form
- Öffnen der drei Standard-Verbindungen (Eingabe, Ausgabe, Fehlermeldungen)
- Aufruf der Funktion "main()"
- Leeren von Dateipuffern am Ende
- Schließen aller offenen Verbindungen am Ende
- Ausführung einer Liste von Unterprogrammen bei Programmende
- Bereithalten einer Liste von Umgebungsvariablen
- Verwalten und Entfernen von temporären Dateien
- Übergabe der Rückgabe von ''main()" an das Betriebssystem
Standard-Eingabe- und Ausgabeverbindungen (stdin, stdout & stderr)
Für die Beispiele benötigen wir zuerst die Standard-Eingabe- und Ausgabeverbindungen. In vielen Fällen werden wir von der Tastatur einlesen und auf den Bildschirm ausgeben wollen. Die Aufrufumgebung eines C-Programmes stellt dazu immer drei Verbindungen bereit.
Die drei Verbindungen haben die Namen: "stdin" für Standardeingabe, "stdout" für Standardausgabe und "stderr" für die Ausgabe von Fehlermeldungen.
Die Namen stehen für die Verbindungen, nicht für Dateien oder Geräte. Im Normalfall steht "stdin" für die Verbindung zur Tastatur. Die beiden Ausgabeverbindungen laufen zum Bildschirm. Betriebssysteme wie DOS oder UNIX erlauben die Umlenkung dieser Verbindungen. Mit Hilfe der sogenannte E/A-Umlenkung kann man beim Aufruf eines Programmes auswählen, mit wem die Eingabe- oder Ausgabeverbindung kommunizieren soll.
Unter DOS kann "stderr" (gelegentlich auch Fehlerkanal genannt) nicht umgelenkt werden, unter UNIX geht auch das. Die Trennung in Standardausgabe und Fehlerausgabe wurde eingerichtet, um auch bei umgelenkter Ausgabe Fehlermeldungen noch auf dem Bildschirm zu sehen.
Wichtige E/A-Funktionen in C
Für die Funktionen zur Ein- und Ausgabe gibt es ein eigenen Bereich, in dem die Funktionen vollständig dargestellt werden. Im Vorfeld stellen wir zuerst einmal vier grundlegende Funktionen an, die wir für unsere Beispiele benötigen. Ohne diese Funktionen wären die Beispiele nicht interaktiv:
/* Deklarationen von Variablen */ int getchar (); int putchar(int Zeichen); /* Mögliche Variablentypen */ char xx; int yy; /* Aufruf von getchar() */ yy = getchar(); xx = getchar(); /* Ausgaben mit Ersatzdarstellungen */ putchar ('ABC'); /* Ausgabe eines ABC */ putchar ('\x41'); /* Codeangabe für A */ putchar ('\007'); /* Steuerzeichen, oktal */ putchar ('\n'); /* Ersatzdarstellung */ putchar (yy); /* Ausgabe einer Variablen */
Weiterführende Artikel
- Zeichenweise Ein- und Ausgabe realisieren
- Ausgabe von Texten mit „puts()“ oder „fputsO“
- Formatierte Ausgabe mit „printfO“
- Formatierte Eingabe mit „scanf()“