====== getc() ====== ''getc()'' ist in der ''[[c:lib:stdio:start|stdio]]'' definiert, die in C über ''stdio.h'', bzw in C++ über ''cstdio'' eingebunden wird. ===== Funktion ===== ''getc()'' liest ein Zeichen vom übergebenen Stream und äquivalent zu ''[[fgetc()]]''. ''[[fgetc()]]'' ist zu bevorzugen, da ''getc()'' als Makro implementiert sein kann. ===== Signatur ===== #include int getc( FILE * file ); **file**: Ein gültiger Stream, aus dem gelesen werden kann. \\ \\ **Return value**: Ein unsigned char, der als Integer zurückgegeben wird oder EOF beim Dateiende. ===== Fehlerquellen ===== siehe [[inputtrouble|Fehlerquellen bei Standard-Eingabefunktionen]]. ===== Beispiel ===== Folgendes Programm fragt solange nach, bis ein 'x' eingegeben wurde: #include #include int main () { int c = 0; while( c != 'x' ) { printf( "Bitte geben Sie einen Buchstaben ein: " ); fflush( stdout ); c = getc( stdin ); printf( "Sie gaben folgenden Buchstaben ein: %c\n", c ); } return EXIT_SUCCESS; } **Ausgabe**: Bitte geben Sie einen Buchstaben ein: x Sie gaben folgenden Buchstaben ein: x Hierbei muss nach der Eingabe des Buchstabens die Return-Taste gedrückt werden, damit das Programm auf die Eingabe reagiert. **Aber:** Bitte geben Sie einen Buchstaben ein: a Sie gaben folgenden Buchstaben ein: a Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: Bitte geben Sie einen Buchstaben ein: x Sie gaben folgenden Buchstaben ein: x Was ist passiert? Beim der zweiten Eingabe wird 1 Buchstabe aus dem Eingabestream gelesen, der kein 'x' ist. Damit verbleibt das "Return-Zeichen" im Eingabestream, das notwendig war, damit der Buchstabe überhaupt bemerkt wird. ''getc()'' reagiert also nicht nur auf ein Zeichen: Bitte geben Sie einen Buchstaben ein: Hallo Sie gaben folgenden Buchstaben ein: H Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: a Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: l Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: l Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: o Bitte geben Sie einen Buchstaben ein: Sie gaben folgenden Buchstaben ein: Bitte geben Sie einen Buchstaben ein: x Sie gaben folgenden Buchstaben ein: x ===== siehe auch ===== [[:|stdio]]: [[getchar()]], [[fgetc()]], [[putchar()]]