Problem mit "backspace"-Funktion

Gast #1839383
Lesenswert?

Hallo Leute!

Ich habe folgendes Problem.

Da ich einen Zeileneditor aus einer Übungsaufgabe erweitert habe, möchte 
ich nun die Funktion "backspace()" programmieren, was bedeutet, sobald 
ich auf die Rücktaste drücke, dass dann mein Text eben 
"backspace-typisch" ab Cursorposition in Richtung Zeilenanfang gelöscht 
wird.
Wenn das Zeilenende erreicht ist, dann soll nix passieren (Cursor soll 
also nicht zurückspringen in die nächsthöhere Zeile).

Nun sitze ich schon seit zwei Stunden an dem Problem, mein Kopf wird 
immer vernagelter und jetzt geht garnix mehr :(

Könntet ihr mir bei der Umsetzung helfen?

Ich habe die Funktion mal derweil so programmiert, allerdings 
funktioniert da garnichts.

Ich schicke einmal die header-Datei und einmal die c-Datei.



Vielen Dank!
Angehängte Dateien:
#1839397
Lesenswert?

ich habe mir den code ehrlich gesagt nicht sehr genau angeschaut (34kb!)
aber .. du darfst eins nie vergessen .. ein algorithmus ist immer
so einfach oder komplex, wie die eingesetzten Datenstrukturen.
Ich vermisse bei dir eine durchdachte Datenstruktur.
Das macht es dir so schwer festzustellten, wann eben die Zeile am Anfang
steht.
Gast #1839440
Lesenswert?

Die Verwaltung der aktuellen Position ist wirklich ziemlich krank.
Aber vielleicht geht ja sowas in der Art:
1
void backspace( void )
2
{
3
  if((cursor_x + first_char) > FIRST_COLUMN)
4
  {
5
    cursor_left();
6
    delete_key();
7
  }
8
}
#1839887
Lesenswert?

JK schrieb:
> Hat keiner mehr eine Idee??

Die einfachst mögliche. Du hast doch schon Hilfsfunktionen, die eine 
ganze Menge alleine können
1
void backspace()
2
{
3
  cursor_left();
4
  delete_key(),
5
}

Das ist das übliche Verhalten von Backspace und nicht irgendwas mit 
löschen bis zum Zeilenende oder vom Zeileananfang oder dergleichen.

> Wenn das Zeilenende erreicht ist, dann soll nix passieren
> (Cursor soll also nicht zurückspringen in die nächsthöhere Zeile).

Na dann frag halt ab, ob der Cursor schon am linken Rand ist. Ist doch 
alles da!

Beitrag "Re: Problem mit "backspace"-Funktion"


> Hat keiner mehr eine Idee??
Doch: Programmieren lernt man nicht, indem man andere seine Hausaufgaben 
machen lässt. Und Analyse von vorhandenem Code ist nun mal Teil davon. 
Hat man die Funktionsweise erst einmal analysiert und die Zusammenhänge 
herausgelesen (Hinweis: Papier und Bleistift und eine Skizze der 
Gegebenheiten sind ausgezeichnete Hilfsmittel) dann ist es nicht mehr 
schwer. Nur machen muss man das. Am besten selber.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren