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
CA
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);