On Wed, Jun 18, 2003 at 07:27:34PM +0200, Fabian Hänsel wrote:
Ich bastel hier gerade an einem kleinem C-Programm herum. Ich möchte mehrere Integer eingeben. Das geschieht per scanf. Nur blöderweise macht scanf immer nach dem Drücken auf Enter die Eingabe in einer neuen Zeile. Das sieht dumm aus, zumal es sich um die Komponenten eines Zeilenvektors handelt. Wie bewege ich also scanf dazu schön in der Zeile zu bleiben? Ich meine bei printf geht's ja
Garnicht. Jedenfalls nicht so einfach. Du könntest versuchen, mit Terminal-Steuercodes wieder die vorhergehende Zeile zu erreichen. Du könntest versuchen, die Konsole im raw-Mode zu betreiben, so daß Du Dich um die Verarbeitung der einzelnen eingegebenen Zeichen (incl. Enter) kümmern mußt, Du könntest nach solchen Dingen wie curses schauen oder nach der ReadLine-Library.
Oder einfach den Nutzer alles auf einer Zeile, mit Leerzeichen getrennt, eingeben lassen.
Bis auf die letzte Aussage habe ich keine der anderen Sachen wirklich probiert.
auch, da läßt man einfach den newline-Operator weg, fertig. Nur scanf ärgert mich hier ein wenig.
Weil scanf() ja erst die Zeile kriegt, wenn sie vom Konsolentreiber an Dein Programm übergeben wird, und im cooked-Mode ist das normalerweise dann, wenn Enter gedrückt wurde, und für das Echo der Zeichen (und das Echo auf Enter sieht eben so: aus - wird auch vom Konsolentreiber gemacht.)
Heiko