getchar()

getchar() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

getchar() liest ein Zeichen von der Standardeingabe und entspricht somit getc (stdin).

Signatur

#include <stdio.h>
int getchar( void );

Return value: Ein unsigned char, der als Integer zurückgegeben wird.

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 = getchar();
 
    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. getchar() 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