Anfängerfrage: Problem mit scanf() und zwei char!
-
Hi!
Ich fange gerade an C zu lernen und stehe schon am Anfang vor einem Problem!
Ich habe ein wenig Erfahrung mit c++!
Also zum Problem:Ich möchte ein ganz einfaches Programm schreiben welches nacheinander zwei char einliest und dann ausgibt:
int main() { char letter_a, letter_b; printf("Please enter letter A: "); scanf("%c", &letter_a); printf("%c\n", letter_a); printf("Please enter letter B: "); scanf("%c", &letter_b); printf("%c\n", letter_b); return 0; }
So, wenn ich diesen Code kompiliere, dann fragt er mich brav nach A ab, wartet aber auf keine weitere Eingabe mehr:
Please enter letter A: d d Please enter letter B:
Das letzte printf() wird auch ausgeführt, jedch wird das zweite scanf() einfach übersprungen!
P.s.: ich kompiliere mit gcc 4.6.1!mfg trunksen
-
Führe mal folgendes Programm aus:
int main() { char letter_a, letter_b; printf("Please enter letter A: "); scanf("%c", &letter_a); printf("A: '%c'\n", letter_a); printf("Please enter letter B: "); scanf("%c", &letter_b); printf("\nB: '%c'\n", letter_b); return 0; }
Das dürfte das Problem klar machen.
seldon hat das Phänomen gestern recht ausführlich erklärt, inklusive Lösung: http://www.c-plusplus.net/forum/p2131935#2131935
-
Vielen Dank, der Link hat das Problem verständlicher gemacht!
Das Problem liegt dann ja sehr viel tiefer als ich gedacht habe !
Leider macht dein Programm aber auch das gleiche!mfg trunksen
-
trunksen schrieb:
Leider macht dein Programm aber auch das gleiche!
Es sollte nur zeigen, dass die Eingabe von letter_b nicht übersprungen wird, sondern dass ein Newline eingelesen wurde (daher die Apostrophe drum, damit man es sieht).
Eine echte Lösung steht im Link, wie du vielleicht schon gemerkt hast.
-
Achso, das habe ich dann falsch verstanden!
Ja mit der Methode alles bis zum Zeilenumbruch zu ignorieren funktioniert es super!
danke!