getchar verständnis Problem



  • Hi,
    bin heute morgen mit getchar auf ein mir nicht verständliches Problem gestossen.
    Das Programm soll nacheinander 3 Zeichen abfragen und diese wieder ausgeben...

    Anzeige:
    -------------------------------
    Eingabe 1:A
    A
    Eingabe 2:B
    B
    Eingabe 3:C
    C

    A
    B
    C
    ------------------------------

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
      char eins, zwei, drei;
    
      printf ("Eingabe 1: ");                       //Anzeige "Eingabe 1: ".
      eins = getchar();                             //Eingabe "erstes Zeichen".
      //scanf ("%c", eins);
      printf("%c\n",eins);                          //Ausgabe des ersten Zeichens.
    
      printf ("Eingabe 2: ");                       //Anzeige "Eingabe 2: ".
      zwei = getchar();                             //Eingabe "zweites Zeichen".
      //scanf ("%c", zwei);
      printf("%c\n",zwei);                          //Ausgabe des zweiten Zeichens.
    
      printf ("\nEingabe 3: ");                     //Anzeige "Eingabe 3: ".
      drei = getchar();                             //Eingabe "drittes Char".
      //scanf ("%c", drei);                         
      printf("%c\n",drei);                          //Ausgabe des dritten Zeichens.
    
      printf ("%c \n%c \n%c", eins , zwei, drei);  //Ausgabe aller Zeichen.
    
      //============ENDE==============0
      printf ("n\n\n");  
      system("PAUSE");	
      return 0;
    

    Aber mit getchar und scanf wird mir das hier angezeigt:

    http://img191.imageshack.us/img191/8313/ceingabefehler.jpg

    Hierbei lässt er mich das erste Zeichen eingeben, gibt es wieder, und ÜBERSPRINGT dann Eingabe 2:

    printf ("Eingabe 2: ");                       
      zwei = getchar();                             
      //scanf ("%c", zwei);
      printf("%c\n",zwei);
    

    und lässt mich erst wieder Zeichen 3 eingeben.

    So sieht das auf 2 verschiedenen PC`s mit 2 verschiedenen Compilern aus...
    kann mir das jemand erklären?

    Mit einem Array für jeden Char und scanf lässt sich das Problem beheben...
    Aber ist das normal dass das nicht funktioniert?

    Danke 😉



  • int getchar(void)

    getchar liefert einen int und keinen char. Das wuerde ich mal aendern.



  • Da liest du das Zeichen der Entertaste ein (ein '\n').

    Gib mal den Code der Zeichen aus:

    printf ("eins: %d \nzwei: %d \ndrei: %d\n", eins , zwei, drei);
    

Anmelden zum Antworten