[C] Taste einlesen auf Tastendruck

Von: , Frage gestellt am Mi, 2. Mai 2001

Hi All!

Gibt es in Standard ANSI-C eine Funktion, um auf einen Tastendruck zu warten und die gedrückte Taste dann abzufragen? Denn mit getc, fgetc oder getchar muss immer ENTER zur Bestätigung gedrückt werden.

Vielen Dank für die Hilfe!

Lex.

8 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: [C] Taste einlesen auf Tastendruck

    Hm, das ist mir neu, das mit getc() ENTER gedrückt werden muß.
    Welchen Compiler verwendest Du denn ?

    Hier mal ein Auszug aus der Doku eines Compilers:

    Header-Datei
    stdio.h

    Syntax
    #include <stdio.h>
    int getc(FILE *stream);

    Beschreibung

    Liest ein Zeichen aus einem Stream.

    getc gibt das nächste Zeichen aus dem gegebenen Eingabe-Stream
    zurück und erhöht den Dateizeiger des Streams entsprechend, daß
    dieser auf das nächste Zeichen zeigt.


    beispiel:
    char c = getc(stdin);

    Wenn Du unter Windows programmierst schau Dir mal getch() aus der
    conio.h an.

    Gruß

    Michael [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

    • Antwort von nach 2 Stunden 0 hilfreich
      Re^2: [C] Taste einlesen auf Tastendruck

      Hi Michael!

      Habs soeben getestet: Ich programmiere unter Linux mit dem gcc-Compiler Version 2.95.2. Mein Programm lautet so:

      #include <stdio.h>

      int main()
      {
      char taste;
      printf("Bitte Taste drücken: ");
      taste = getc(stdin);
      printf("\n\rDeine Eingabe: %c",taste);
      return 0;
      }

      Dieses Programm wartet leider auf meine Enter-Bestätigung.

      Was mache ich falsch?

      Gruss und danke für die Hilfe

      Alex [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 5 Stunden 0 hilfreich
        Re^3: [C] Taste einlesen auf Tastendruck

        Hi Lexus,


        ich habs es eben mal probiert.
        Alle möglichkeiten die mir eingefallen sind warten auf ENTER.

        Wenn ich was finden sollte sag ich Dir bescheid. Interessiert mich nun auch :)



        Micha

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: [C] Taste einlesen auf Tastendruck

          Hallo,


          bei älteren Kompeiler geht es so:

          char Taste;

          Taste==kbhit();

          In der Taste steht der ASCII Wert.

          mfg
          Avantgarde

          • Antwort von nach einem Tag 0 hilfreich
            Re^5: [C] Taste einlesen auf Tastendruck

            Hi!

            kbhit ist wenn ich mich recht entsinne auch Microsoft spezifisch.

            Ich habe mal Frank Wille befragt - u.a. am Compiler vbcc beteiligt.
            Zitat:

            "Es gibt keine ANSI-C (und auch keine ISO-C99) Funktion die dies
            ermöglicht. getc() bzw. getchar() kehren erst nach Betätigen der
            Return-Taste zurück, sofern die Eingabedatei eine Console ist.

            Um einen Tastendruck direkt abzufragen wird man schon das jeweilige
            OS bemühen müssen. Bei DOS-Systemen gibt es häufig eine getkey()
            Funktion in den Libraries. Bei AmigaOS schaltest Du die Console mit
            SetMode(Input(),1) in den Raw-Modus um.
            "

            Michael [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

            • Antwort von nach 2 Tagen 0 hilfreich
              Re^6: [C] Taste einlesen auf Tastendruck

              Hallo,

              das ist nicht Microsoft spez. sonder funktioniert auch mit alten Borland Comp.
              Das ist ein Beisp. Code mit dem du eine Tastenbetä. abfragen kannst ohne Eingabetaste.

              mfg
              Avantgarde

              char scroll;
              do
              {
              scroll=kbhit();
              }while(scroll==0);

              scroll=getch();//Hier wird das Wert reingeschrieben
              printf("%d",scroll);

            • Antwort von nach 2 Tagen 0 hilfreich
              Re^7: [C] Taste einlesen auf Tastendruck

              Gut,

              dann ist es Betriebssystem spezifisch.

              Auf jedenfall keine Portable Funktion!
              Wie weiter oben zitiert, muß für die Funktionalität das entsprechende OS
              bemüht werden. kbhit() wird von Borland u.ä. Compilern in eigenen Bibliotheken
              zur verfügung gestellt. Jedoch können die Programme auch nur auf diesen Compilern
              übersetzt werden....



              Micha

  2. Antwort von nach einem Tag 0 hilfreich
    Danke an alle!

    Hi All!

    Vielen dank für Eure bemühungen. Dann werde ich mich wohl mal mit der curves-Bibliothek beschäftigen müssen!

    Gruss

    Lex.

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!