getc()

getc() ist in der 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 <stdio.h>
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

Beispiel

Folgendes Programm fragt solange nach, bis ein 'x' eingegeben wurde:

#include <stdlib.h>
#include <stdio.h>
 
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