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