Christoph Gärtner: C-Programmierung: conio.h unter Linux für getch()

Beitrag lesen

Nochmal ich.

Christian hat natürlich recht: getchar() wird in der Regel so implementiert, dass erst nach Eingabe eines Zeilenumbruchs ein Wert geliefert wird.

Das Konzept des Tastendrucks gibt es in ANSI C nicht, daher ist auch das klassische "press any key to continue" unmöglich (das getch() im Hallo-Welt-Beispiel sollte genau dazu dienen: das Programm wird erst nach Nutzereingabe beendet, was beispielsweise verhindert, dass sich das Konsolenfenster nach Ausführung sofort wieder schließt).

Neben Christians Lösungsvorschlag wäre auch folgender Workaround denkbar: In stdlib.h gibt es die Funktion system(char*), die es ermöglicht, Befehle an die Shell zu senden.
Unter Windows kann man dann system("pause"); verwenden, unter Linux müsste etwas wie "read -n 1" funktionieren - ob das auch eleganter geht, weiß ich nicht. Die Portabilität ist dann natürlich wieder futsch!

Ansonsten warst du mit Ncurses auf der richtigen Spur - ein #include <curses.h> hätte zum Ziel führen sollen, deinem gcc ist aber anscheinend die entsprechende Bibliothek unbekannt.

Falls du sie selbst bauen möchtest: http://ftp.gnu.org/pub/gnu/ncurses/
Andernfalls rät die Doku, für RPMs bei http://rpmfind.net/ zu suchen...

Gruß
 Christoph