====== 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()]]