Abhängigkeiten des Verhaltens in C
Eine Meßfunktion
Tip zum schnellen Lernen Versuchen Sie jetzt nicht, zu verstehen, was die »0« in »perror( 0 )« bedeutet. Dies ist derzeit noch nicht wichtig! Vorläufig reicht es sich zu merken, daß bis auf weiteres als Argument immer 0 verwendet werden muß.
#include <stdio.h>
int main( void )
{ perror( 0 );
ftell( stdin );
perror( 0 ); }
»perror( 0 )« ist eine bestimmte Funktionsoperation, jedoch ist ihr Verhalten trotzdem noch nicht bestimmt. Das Verhalten wird erst durch Operation und die Umgebung bestimmt.
Funktion Argumentwert
| |
'----------.---------'
|
V
Operation Zustand der Umgebung
| zur Zeit der Operation
| |
'---------------.--------------'
|
V
Verhalten
Eine solche Funktion, deren Verhalten durch die Umgebung zum Zeitpunkt der Ausführung mitbestimmt ist, nennen wir hier eine Meßfunktion, weil sie quasi die Umgebung mißt. Man kann genausogut auch sagen, daß sie etwas aus der Umgebung liest.
»getchar« im Ausgaberahmen
Beim Aufruf von »getchar« liest die C-Implementation ein Zeichen ein.
In vielen Implementationen wartet die Implementation dabei auf die Eingabe eines Zeichens, die in der Regel noch mit einer Eingabetaste bestätigt werden muß. In der Regel gilt auf den meisten Implementationen: Falls mehrere Zeichen eingegeben wurden, so wird nur das erste eingelesen. Falls nur die Eingabetaste gedrückt wurde, so gilt diese als das eingegebene Zeichen.
- Dokumentation der Funktion »getchar« (nach N1570, überarbeitet, vereinfacht und übersetzt)
- 7.21.7.6 Die Funktion »getchar«
- Synopse
#include <stdio.h>
int getchar( void );
- Beschreibung
- Diese Funktion liest ein Zeichen ein.
- Ergebnis
- Diese Funktion ergibt die Kennzahl des nächsten eingelesenen Zeichens.
Das folgende Programmbeispiel gibt die Kennzahl eines eingegebenen Zeichens aus. Wir nehmen hier die Eingabe des Zeichens »A« an. Die Eingabe betiteln wir dabei mit »stdin«, die Ausgabe mit »stdout«.
main.c
#include <stdio.h>
int main( void )
{ printf( "%d\n", getchar()); }stdin
A
stdout
65
Man kann »getchar()« als eine Wirkfunktion ansehen, da das Programm angehalten wird, um auf eine Eingabe zu warten. Jedoch ist diese Wirkung nicht dokumentiert, weswegen diese Interpretation in Frage gestellt werden kann.