Einen einfachen Editor in C programmieren...



  • Ich muß für meine Ausbildung einen Texteditor auf Konsolenbasis in C programmieren
    (unter DOS mit dem alten Turbo C) leider stehe ich total auf dem Schlauch...
    Finde einfach keinen vernünftigen Ansatz.

    Weiß jemand wie so ein einfacher Texteditor funktioniert ?
    Ich meine was für eine Datenstruktur ? Verbindung zwischen Daten und dem
    was auf dem Bildschirm passiert.

    Ich habe bisher nur eine Idee und zwar mit einer fest definierten Zeilenlänge und
    einem zweidimensionalen String-array. In dieses wird die Datei dann eingelesen
    und Ausgegeben, somit entspricht dann jedes einzelne Zeichen im array einer X-Y Position auf dem
    Bildschirm. So könnte ich dann zeichenweise Arbeiten. Ist natürlich absolut nicht schön.
    Zum Besipiel ein "Ausschneiden und Einfügen" wäre ein ganz schöner Krampf.
    Allein das Ausschneiden so nach dem Motto: Jedes Zeichen das markiert wird neu Ausgeben
    in anderer Farbe oder ähnlich um die Markierung kenntlich zu machen dabei die Positionen der Zeichen
    Speichern und die Zeichen selbst dann den String zeichenweise aufrücken
    (ausgeschnittene Zeichen löschen) wieder Ausgeben...
    Und beim Einfügen nochmal sowas in der Art. Ist irgenwie Mist.

    Habe auch einfach mal in den Quelltext des NANO-Editors für Linux geschaut aber das ding ist ja schon so
    groß da steige ich nicht durch, kann mir nur manchmal etwas darunter vorstellen, zum Beispiel ist
    dort immer wieder von "nodes" die rede die scheinen irgendwie mit verketteten Listen zu arbeiten schätze ich.
    Ich habe von komplexen Datenstrukturen noch keine Ahnung aber man könnte sich ja reinarbeiten.

    Man merkt sicherlich das ich noch nicht sehr viel Erfahrung in der Programmierung habe, also
    versteht mich jetzt nicht falsch, möchte jetzt nicht einen super Editor schreiben der sonstwas
    kann es soll ein ganz einfacher Editor werden ich möchte aber wenigstens versuchen das nicht so
    dreckig mit verschwendung von Speicher und Rechenleistung zu machen. Außerdem wäre es
    ganz schön wenn man das ganze später noch erweitern könnte was mit der oben angedachten
    Lösung sicher sehr schwierig wird.

    Hm nun weiss ich garnicht was noch schreiben soll, ich wäre für jeden noch so kleinen
    Tip dankbar...

    PS.: Ich hoffe ich habe das richtige Unterforum gewählt, scheint mir hier
    am besten zu passen.



  • Ich denk ne doppelt verkettete Liste ist ganz gut. Speicher einfach jeden Buchstaben einzeln als Knoten in der Liste. Mit so ner Liste kannst du dann ganz gut vorwärts und rückwärts scrollen. Da brauchst du nur nen Pointer der auf das erste Zeichen zeigt das angezeigt werden soll. Beim scrollen musst du den dann nur verschieben. Und das einfügen von Text ist auch an jeder stelle möglich. Hast halt noch nen Pointer der auf das Zeichen zeigt wo der Cursor ist und fügst dann da ein







  • Super vielen Dank !
    Dann werd ich mich erstmal mal mit einer doppelt verkettete Liste beschäftigen...


Anmelden zum Antworten