Woodz
Lieutenant
- Registriert
- Apr. 2009
- Beiträge
- 696
Hallo.
Hier zunächst der Code:
Folgendes Problem. Ich frage über eine Funktion die Anzahl der Spieler ab.
Wenn ich interger (unsigned char) Werte eingebe, wird die Funktion auch super abgefragt. Aber wenn ich, wie hier im Beispiel ein "d" eingebe, also einen "char" Wert, läuft die Schleife in einer Dauerschleife.
Warum ist das so? Müsste die Schleife nicht beim nächsten Aufruf von scanf() stehen bleiben und auf den Input des Benutzers warten?
Beste Grüße
Hier zunächst der Code:
C:
// Spiel.anzSpieler => unsigned char
// spiel Spiel = {.anzSpieler = 0}
void frageAnzahlSpieler(const unsigned char anzSpieler_min, const unsigned char anzSpieler_max, spiel *Spiel){
int check;
do{
printf("Gib die Anzahl der Spieler ein.\n");
printf("Min: %d / Max: %d\n", anzSpieler_min, anzSpieler_max);
check = scanf("%hhu", &Spiel->anzSpieler); // %hhu -> unsigned char
printf("check: %d, anzSpieler: %hhu\n", check, (*Spiel).anzSpieler);
}
while(((*Spiel).anzSpieler < anzSpieler_min) || ((*Spiel).anzSpieler > anzSpieler_max) || (check != 1));
}
/*output:
Gib die Anzahl der Spieler ein.
Min: 2 / Max: 5
> d
check: 0, anzSpieler: 0
Gib die Anzahl der Spieler ein.
Min: 2 / Max: 5
check: 0, anzSpieler: 0
Gib die Anzahl der Spieler ein.
Min: 2 / Max: 5
check: 0, anzSpieler: 0
...
...
*/
Folgendes Problem. Ich frage über eine Funktion die Anzahl der Spieler ab.
Wenn ich interger (unsigned char) Werte eingebe, wird die Funktion auch super abgefragt. Aber wenn ich, wie hier im Beispiel ein "d" eingebe, also einen "char" Wert, läuft die Schleife in einer Dauerschleife.
Warum ist das so? Müsste die Schleife nicht beim nächsten Aufruf von scanf() stehen bleiben und auf den Input des Benutzers warten?
Beste Grüße