Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: livinskull am 16. December 2007, 21:01
-
Moin, moin
ich hab grad n Problem mit meinem Tastaturtreiber, und zwar funktioniert die Funktion get_line ganz unten nicht wie sie soll. Die sollte nämlich erst beendet werden, wenn Enter gedrückt wird, sie wird allerdings sofort beendet ohne das überhaupt eine Taste gedrückt wurde...
Ich denke da ist irgendwo ein logischer Fehler in der while-schleife, ich komm aber einfach nich drauf :?
der quellcode ist hier: http://nopaste.org/p/a78gLVdOL
Danke im vorraus, livinskull
-
Moin,
ein problem könnte ich sehen, wenn der puffer bereits voll ist, bevor du get_line aufrufst. die letzte zelle wird so wie ich es sehe nie gelöscht.
Eine anderer punkt, bist du dir sicher, das der pressed_keys puffer auch wirklich lehr ist? Sich in dem punkt nicht auf den kompiler verlassen, und selber in einer Init funktion auf den start wert setzen.
du schiebst deine eingelesenen zeichen kräftig durch die gegend. ggf währe ein ringpuffer eine alternative.
aufpassen mit der null terminierung. die benötigt im übergebenen Puffer auch platz. nicht das dadurch andere Daten überschrieben werden.
gruss
-
OK, klappt jetzt
Verwende jetzt nen Ringbuffer und statt dem zeugs mit den pointern (
buff-tmp <groesse) einfach ne variable die mitzählt.
PUffer wird jetz auch gleich ordentlich initialisiert, aber ich glaub da war was mit den pointern kaputt
thx for help
livinskull