Probleme mit Do while schleife



  • Hallo

    Ich benutzte eine Do Schleife um die Eingabe von werten zubeschränken sprich er soll den Benutzter solange auffordern die Eingabe zumachen bis sie der bedingung der while anweisung entspricht.

    Ich benutzte folgenden Code:

    do{
    	printf("Bitte postive untere Grenze eingeben:");
    	scanf("%i",&unter);
    	}while(unter<=0);
    

    Klappt soweit auch ganz gut, nur wenn ich einen Buchstaben eingebe ( den er nicht als gültige eingabe akzeptieren sollte) verfällt das programm in eine Endlosschleife und hört nicht mehr auf.

    Wie gehe ich bei der Bedingung mit buchstaben um ?
    bringt mir eine der funktionen aus der ctype.h etwas ? wenn ich die while anweisung evt mit einer von denen verknüpfe ?

    Danke im vorraus für die hilfe

    MFG

    Marvin



  • Wenn Du scanf() einen Buchstaben (in diesem Fall als mit CRLF terminieren string)
    vorwirfst, kann es für "unter" keinen Wert bestimmen, es sind ja keine Ziffern da.
    scanf() macht also gar nichts und läßt "unter" unverändert.

    Abhilfe:

    1. unter mit einem Wert, zB -1 vorbelegen oder
    2. den Rückgabewert von scanf() auswerten (scanf() gibt die Anzahl gefunden Krams
    zurück, in diesem Fall 1 wenn es "unter" etwas gegeben hat.



  • erstmal danke für die antwort....

    ja hab scanf einer integer variable zugewiesen, wenn ich jetzt aber einen buchstaben eingebe hört die schleife trotzdem nichtmehr auf.

    also soweit ich weiß hast du nicht ganz recht, da wenn ich einen buchstaben eingebe, den in eine integer variable speicher und sie als integer ausgeben lasse ist die variable nicht leer sondern der buchstabe als zahl dargestellt ( in den meißten fällen -894859845398498539485)

    korrigiere mich bitte wenn ich falsch liege



  • Prüfe den return-Wert von sscanf().


Anmelden zum Antworten