Hey ich habe mir eine einfache Funktion rausgesucht, welche nur integer ausgibt und dazu eine Frage:
Also was ich verstanden habe ist das scanf bei chars 1 ausgibt und bei int 0. Das Ret ist somit klar.
Bei Scanf wird die Nummer und ein Char gescannt. Also praktisch ist der Char für das Enter da. Nach nachforschen im Internet anscheinend dafür, dass bei der Scanf das Enter (\n) im Puffer gespeichert wird und somit man dann praktisch dieses abfängt. In der zweiten while wird dieser Puffer dann irgendwie gelöscht.
Dazu kurz die Frage wie die zweite while schleife genau den Puffer löscht oder falls ich das falsch verstanden haben wie es sonst funktioniert.
Danke für eure Mühe.
Code:
int lese_int() {
int number = 0;
int ret = 0;
char c;
printf("Bitte geben sie eine Nummer ein: ");
while (ret == 0) {
ret = scanf("%d%c", &number, &c);
while (c != '\n' && getchar() != '\n') {};
if (ret == 0)
printf("\nDas war keine Nummer. Versuchen sie es erneut: ");
}
return number;
}
Bei Scanf wird die Nummer und ein Char gescannt. Also praktisch ist der Char für das Enter da. Nach nachforschen im Internet anscheinend dafür, dass bei der Scanf das Enter (\n) im Puffer gespeichert wird und somit man dann praktisch dieses abfängt. In der zweiten while wird dieser Puffer dann irgendwie gelöscht.
Dazu kurz die Frage wie die zweite while schleife genau den Puffer löscht oder falls ich das falsch verstanden haben wie es sonst funktioniert.
Danke für eure Mühe.