Benutzer mit den meisten Antworten
Problem: Mehrere Zeichen hintereinader einlesen - Tastaturpuffer

Frage
-
Hallo allerseits,
Unter Visualstudio 2017 (unter alteren Versionen funktionieret es aber) gibt es bei folgendem Code Probleme:
Egal ob:
scanf("%c", &zeichen1)
fflush(stdin)
scanf("%c", &zeichen2)
fflush(stdin)
oder
scanf_s("%c", &zeichen1,1)
fflush(stdin)
scanf_s("%c", &zeichen2,1)
fflush(stdin)
In zeichen2 steht immer das Asciizeichen 10, also der Tastaturcode für Enter.
Wie kann man den Tastaturpuffer löschen?
mfg
Bh
Antworten
-
Hallo,
mit fflush(stdin) wird der Puffer gelöscht. Da das bei dir wohl nicht klappt, prüfe die return-Werte.
Du kannst auch das mal versuchen:
char zeichen;
scanf("%c%*c", &zeichen);
Gruß Guido
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 4. November 2019 06:42
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 12. November 2019 13:40
-
Hallo BernhartDiener,
ich kann das beschriebene Verhalten nicht reproduzieren (auch nicht mit Visual Studio 2017).
fflush auf einen lesenden Stream hat keinerlei Effekt, der Aufruf ist also völlig überflüssig.
Ich schätze das Verhalten liegt an deinen Eingaben, denn bei der Eingabe von "a", "Enter", "b", findet sich in zeichen2 natürlich das Zeichen für "Enter" - eine Eingabe "a", "b" würde zum Zeichen "b" in zeichen2 führen.
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 4. November 2019 06:42
- Bearbeitet Florian Haupt Montag, 4. November 2019 14:27
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 12. November 2019 13:40
Alle Antworten
-
Hallo,
mit fflush(stdin) wird der Puffer gelöscht. Da das bei dir wohl nicht klappt, prüfe die return-Werte.
Du kannst auch das mal versuchen:
char zeichen;
scanf("%c%*c", &zeichen);
Gruß Guido
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 4. November 2019 06:42
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 12. November 2019 13:40
-
Hallo BernhartDiener,
ich kann das beschriebene Verhalten nicht reproduzieren (auch nicht mit Visual Studio 2017).
fflush auf einen lesenden Stream hat keinerlei Effekt, der Aufruf ist also völlig überflüssig.
Ich schätze das Verhalten liegt an deinen Eingaben, denn bei der Eingabe von "a", "Enter", "b", findet sich in zeichen2 natürlich das Zeichen für "Enter" - eine Eingabe "a", "b" würde zum Zeichen "b" in zeichen2 führen.
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 4. November 2019 06:42
- Bearbeitet Florian Haupt Montag, 4. November 2019 14:27
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 12. November 2019 13:40