getchar() nach scanf(), wieso?
-
Hallo,
ich beschäftige mich gerade mit einem Programm, dass es ermöglichen soll Orte auszugeben, die zu bestimmten PLZ gehören.
Außerdem ist es möglich neue PLZ und Orte hinzuzufügen.Meine Frage bezieht sich nun auf folgenden Auswahlzweig des Programmcodes:
else if(wahl == 2) { printf("Neue Postleitzahl : "); scanf("%5u",&post); getchar(); printf("Ort für PLZ %d : ",post); fgets(new_ort, MAX, stdin); einfuegen(post, strtok(new_ort, "\n") ); }
ich würde gerne wissen aus welchem Grund nach der Zeile mit scanf() das getchar() folgen muss und wieso das Programm nicht ohne das getchar() lauffähig ist?
Ohne getchar() stürzt das Programm zur Laufzeit ab.Danke.
Gruß
MattJ
-
Um das \n aus dem Eingabepuffer wegzubekommen, da scanf das dort drinlässt.
-
gib mal ein 'a' ein.
oder ein 'b'
:p
-
wo meinst du 'a' oder 'b' eingeben?
...dann könnte man doch aber anstannt dem getchar() doch aber auch fflush(stdin) nutzen oder nicht?
-
Nein, weil fflush auf stdin undefiniert ist.
-
MattJ schrieb:
wo meinst du 'a' oder 'b' eingeben?
...dann könnte man doch aber anstannt dem getchar() doch aber auch fflush(stdin) nutzen oder nicht?na, bei der eingabe. so, daß scanf nen buchstaben zu futtern kriegt.