scanf
-
hi,
ich habe da so nen prob, das programm überspringt immer mein scanf beim 2 durchlauf! hat da einer ne idee??
int eingebeneZahl; // Variable für die Eingebne Zahl deklarieren
int check; // Variable zum überprüfen, ob eingabe richtig ist
int i=0; // Schleifenzähler für Komentareint eingebeneZahl; // Variable für die Eingebne Zahl deklarieren int check; // Variable zum überprüfen, ob eingabe richtig ist int i=0; // Schleifenzähler für Komentare do { if (i<=2) { printf("Bitte geben Sie eine Zahl ein : "); //Ausgabe, Zahl eingeben i++; } if (i>=3) { printf("Was ist so schwer daran ein Zahl einzugeben?\n"); printf("Bitte geben Sie eine Zahl ein : "); //Ausgabe, Zahl eingeben } check=scanf("%d",&eingebeneZahl); //Zahl einlesen printf("Check=%d\n\n",check); //(wird nur zum testen benötigt) if (check==1) { printf ("Die Zahl lautet:%d\n\n",eingebeneZahl); } } while(check!=1);gruss alex
-
Hallo,
das newline-Zeichen ('\n') hängt noch im Puffer, das kannst du mit folgender Funktion rausholen:
void clearStdin() { int c; while ((c=getchar()) != '\n' && c != EOF); };Die rufst du nach deinem scanf auf und schon klappt's.
MfG
GPC
-
Wenn scanf() etwas gesehen hat, was nicht zu seinem Formatstring passt, beendet es sich und bleibt an dieser Stelle im Lesepuffer stehen - d.h. bei der nächsten Eingabe setzt er mit dem ersten Zeichen fort, das er nicht erkannt hat.
(in deinem Fall bedeutet das, mit der ungültigen Eingabe)Als Lösung müsstest du nach dem Eingabefehler den Tastaturpuffer auskippen, um ordentlich weitermachen zu können:
if (check==1) { printf ("Die Zahl lautet:%d\n\n",eingebeneZahl); } else { while(getchar()!='\n');//alles lesen und verwerfen bis zum newline }(PS: Übrigens ist das C-Code und gehört eine Etage höher ;))
-
vielen dank!
damit wäre diese hörde auch geschaft!

gruss alex
ps: @CStoll, bei nächsten mal poste ich ne etage höher!!)