getch() will nicht so wie ich will...
-
Habs so geändert :
void tast(void) { int chr; fflush(stdout); getch(); fflush(stdout); chr = getch(); printf("Es wurde der Buchstabe %c eingegeben", chr); getch(); }
Nunja, nun wird zB "Es wurde der Buchstabe s ausgegeben" angezeigt, allerdings musste ich noch mit Enter bestätigen bevor der String ausgegeben wurde...
Dann hab ich das erste fflush und getch weggelassen, nun wird es wie am Anfang angezeigt : nur ein Zeilenumbruch
Ich bin irgendwie zu dumm dafür
-
OH!
stdin, nicht stdout! Sry...Hm. Erklär mir mal, warum du in der Funktiom 3 mal getch() aufrufst.
-
Gärtner schrieb:
OH!
stdin, nicht stdout! Sry...Hm. Erklär mir mal, warum du in der Funktiom 3 mal getch() aufrufst.
Ähm weiß ich selber nicht genau, ich probier einfach mal
Viel kaputtmachen kann ich ja nicht. Also das chr = getch() soll ja das Zeichen in die Variable speichern. Das letzte getch(); soll das Programm einfach nur in "Wartezustand" setzen damit es sich nicht sofort nach Ausgabe schließt. Das erste hab ich einfach zu Testuwecken eingebaut.
Sooo und bei stdin muss man immernoch mit Enter bestätigen
void tast(void) { int chr; fflush(stdin); chr = getch(); printf("Es wurde der Buchstabe %c eingegeben", chr); getch(); }
P.S.: Ich finds super, dass in dem Board hier kein Registrierungszwang besteht
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320.html
Alles was du brauchst: kbhit()P.S.: Ich finds super, dass in dem Board hier kein Registrierungszwang besteht
Ganz deiner Meinung!
-
Ich möchte ja nicht nerven, aber...
Ich bin wirklich zu dumm dafür
Es wäre sehr sehr nett, wenn du mir ein Beispiel schreiben könntest dass so ungefähr das ausführt wie in der Auflistung im ersten Thread beschrieben. (Also zumindest den ersten u. Zweiten Punkt der Liste mit dem einlesen , den Rest schaff ich glaube ich alleine).
-
Ich bin müde.
void tast(void) { int chr; fflush(stdin); do{ chr = kbhit(); }while(chr==0); //auf Tastendruck warten printf("Es wurde der Buchstabe %c eingegeben", getch()); //dann ausgeben }
Kein Anspruch auf Richtigkeit. Gute Nacht. In 5 min bin ich weg, wenn du noch ne Frage hast, beeil dich.
-
Man muss immernoch mit Enter bestätigen ? Ich kapier es langsam selber nicht mehr. Ich verwende Dev-C++ als Software ? Ist die irgendwie Falsch ?
-
... }while(chr==0); //auf Tastendruck warten printf("Es wurde der Buchstabe %c eingegeben", chr); }
Probiers. Aber die Wahrscheinlichkeit, dass es geht, ist minnimal. Bitte lies dir den Link oben durch.
-
Naja ich werds noch weiter Probieren. Dir wünsche ich eine Gute Nacht
und Danke für deine Hilfe.
-
Warum hilft dem armen Mann denn niemand?
fflush(stdin) ist Mist, weil undefiniert. Siehe hier
Dass Du zuerst mit Enter bestätigen musst, bevor das Programm anfängt, die Eingabe zu verarbeiten, liegt an der Eingabepufferung, an der Du auch mit Standardmitteln nichts ändern kannst. Ich schätze, die Improved Console kann das für Dich leisten.
kbhit ist Bestandteil von Borland C (imho), nicht jedoch von Visual C++ oder MinGW. Sie gehört keinesfalls zum Standard, ist aber auch durch die Improved Console abgedeckt.
EDIT:
Der alte Beitrag von SideWinder ist von 2002, das gilt heute nur noch begrenzt, da die conio.h sogut wie nirgendwo mehr beiliegt. Siehe Improved ConsoleEDIT2:
Hab jetzt erst mitbekommen, dass die IC eine C++ Bibliothek ist (bzw. das Forum, in dem ich bin verschwitzt :D), das könnte jetzt natürlich problematisch werden
-
Hmm ich hab mir dennoch den alten Beitrag mal richtig durchgelesen und die anderen Befehle probiert. Und es funktioniert ! Benutze ich getche() statt getch() , dann muss ich nicht mit der Enter Taste bestätigen.
void tast(void) { int chr; fflush(stdin); do{ chr = kbhit(); }while(chr==0); chr = getche(); printf("Es wurde der Buchstabe %c ( %i ) gedrückt",chr,chr); }
^ Das Funktioniert. Und das ist guuut
Ich denke vorerst ist mein Problem geklärt
Danke an den Gärtner und an dich, LordJaxom (auch wenn dein Beitrag sich eher an C++ richtet
) - Problem gelöst.
-
Okay, versuche wenigstens nochmal, ob es auch ohne fflush(stdin) funktioniert, denn wenn nicht, könnte es sein dass das Ganze mit dem nächsten Compiler nicht mehr funktioniert.
(Sofern der noch getche an Bord hat ;))
-
Es funktioniert Teilweise
Also man muss zwei Tasten drücken, nur die Zweite wird dann in die Variable gespeichert (gleicher Quellcode wie oben nur ohne fflush).
-
Gast_Kaktus621 schrieb:
Es funktioniert Teilweise
Also man muss zwei Tasten drücken, nur die Zweite wird dann in die Variable gespeichert (gleicher Quellcode wie oben nur ohne fflush).
Ne vertan, entschuldigung
Es funktioniert normal, hab mich nur vertan...