Eingabe ohne Enter übernehemen
-
Das Problem ist Folgendes: Ein Program soll nach ausführung fragen ob es noch mal Errechnet werden soll. Mann soll von der Tastatur j oder n drücken. Für n wird das Program beendet. Für j wird die Berechnung noch mal ausgeführt.
Das Problem liegd da das es soll automatisch (also ohne danach enter zu drücken) nach der Eingabe von Tastatur weiter machen (also bei gedrückten n oder j)??
Mir wurde gesagt das sowas Realisierbar ist mit conio.h und get char() aber auch damit bin ich nich weiter gekommen.
Hat jemand eine Idee??
MFG Sebi
-
Mit Standard C nicht, unter Linux wäre ein Blick auf cbreak() nicht schlecht. Und unter Win wird wohl nur ein Keyboardhook helfen.
tt
-
TheTester: hooks sind wohl etwas zu viel des guten...
@OP: entscheide dich fuer ein betriebssystem. ich moechte dich gerne verschieben.
fuer windows konsole gibt es die "improved console" von sidewinder. google und du wirst fuendig. es gibt eine c version.
fuer unix gibt es diverse moeglichkeiten. ncurses, termcap, was weiss ich noch alles.
-
Also es soll Unter Windows laufen.
Arbeite in Visual Studio
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Sebimaster schrieb:
Also es soll Unter Windows laufen.
Arbeite in Visual StudioSchau mal in die Konsolen-FAQ, die Lösung heißt "getch()"
MfG SideWinder
-
SideWinder schrieb:
Schau mal in die Konsolen-FAQ, die Lösung heißt "getch()"
nich getchar()?
-
Nein getchar() ist a) standardkonform b) liest ebenfalls *ein* Zeichen ein c) dieses Zeichen muss aber mit Enter bestätigt werden.
getch() ist nicht ANSI-C-Standard, kommt aber ohne Enter aus.
Siehe auch FAQ
MfG SideWinder
-
Ok
Danke Sehr an Alle. Mit getch() geht es wie es sollte !!
-
Wie macht man das eigentlich wen man z.B. 'A' oder 'B' drücken soll das auch nur auf diese Zeichen reagiert wird, also wen man dan 'F' drückt das einfach nichts passiert?
-
Naja du überprüfst einfach die Eingabe auf A und/oder B
-
Kan man machen ,aber ich mein das anders.
Wen man ein nichtvorgesehenes Zeichen drückt passiert einfach nichts und man muss nicht mit einer Schleife die Abfrage wiederholen.
-
Meinst du sowas in der richtung:
if(kbhit()) { taste=_getch(); if(taste == 224) // Bei Sondertasten! (z.b. Pfeiltasten) { taste=_getch(); if(taste== /*Code für das jeweilige Zeichen*/) { } { }
-
Man könnte ne Schleife programmieren, die prüft, ob es eine gültige Eingabe ist, aber mit SetConsoleCursorPosition die erneute Eingabe verbergen.
-
Was ist der Unterschied zwischen _getch(); und getch(); ?
-
Xclear schrieb:
Was ist der Unterschied zwischen _getch(); und getch(); ?
'_' bedeutet dass die Funktion nicht Ansi Konform ist, wenn ich mich noch richtig erinnere.
-
_getch ist korrekt (C++ konform) während getch das alste POSIX ist.
Siehe auch
http://msdn2.microsoft.com/en-us/library/ms235429.aspx
fast ganz unten; bzw. C++ standard...