getch() will nicht so wie ich will...



  • 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 Console 😉

    EDIT2:
    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...


Anmelden zum Antworten