C: Wieso gibt das Programm bei Eingabe eines Buchstaben oder etwas Unsinnigem den Schleifenkörper und dessen printf aus?
Hey, ich habe hier ein Problem, das ich überhaupt nicht verstehe.
Ich möchte mit einer while-Schleife eine Zahl des Benutzers abfragen und zwar so lange, bis er die richtige Zahl eingibt. Kriterium: Die Zahl soll größer 1 sein. So weit so gut.
Das Problem, was ich dabei habe ist folgendes: Wenn ich Buchstaben oder etwas völlig Unsinniges eingebe, was ein scanf als nicht vollständige Eingabe registriert, dann gibt das Programm auch den Schleifenköper und dessen printf aus.
Sobald ich jedoch eine Zahl kleiner 1 eingebe, wird erst bei jeder zweiten Falscheingabe die printf-Anweisung ausgegeben.
Ich verstehe einfach nicht, wo der Fehler liegt. Alle Variablen sind initialisiert, keine Sorge. Hier die Schleife:
while ((scanf("%d%c", &input, &c) != 2 || c != '\n' || input < 1)) {
printf("Fehler! Bitte geben Sie eine positive ganze Zahl ein: ");
while ((b = getchar()) != '\n' && b != EOF);
}