[C] Taste einlesen auf Tastendruck

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.

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
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]

Hi Michael!

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

#include

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]

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 :smile:

Micha

Hallo,

bei älteren Kompeiler geht es so:

char Taste;

Taste==kbhit();

In der Taste steht der ASCII Wert.

mfg
Avantgarde

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]

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.

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);

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