====== fgetc() ======
''fgetc()'' ist in der ''[[c:lib:stdio:start|stdio]]'' definiert, die in C über ''stdio.h'', bzw in C++ über ''cstdio'' eingebunden wird.
===== Funktion =====
''fgetc()'' liest ein Zeichen vom übergebenen Stream und äquivalent zu ''[[getc()]]''. ''fgetc()'' ist zu bevorzugen, da ''getc()'' als Makro implementiert sein kann.
===== Signatur =====
#include
int fgetc( FILE * file );
**file**: Ein gültiger Stream, aus dem gelesen werden kann.\\
\\
**Return value**: Ein ''unsigned char'', der als ''int'' zurückgegeben wird oder EOF beim Dateiende.
===== Fehlerquellen =====
siehe [[inputtrouble|Fehlerquellen bei Standard-Eingabefunktionen]].
===== Beispiel =====
Folgendes Programm wartet 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 = fgetc( 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.
''fgetc()'' 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()]], [[getc()]], [[putchar()]]