Ich hab ein Tastenpad 1,2,3,4,5,6,7,8,9,0 und möchte, dass man damit einen Array beschreiben und das Ergebnis als variable abspeichern kann. Den Array zu beschreiben ist ja nicht schwer.
myarray[index] = eine_Zahl;
index++;
Das problem ist aber das löschen, wenn man sich vertippt hat. Anfangs dachte ich das hier:
index--;
myarray[index] = 0;
Aber dann hab ich ja das Problem, das dort später ein Null ausgelesen wird. Ich hätte den index-slot aber gerne komplett leer, damit beim zusammenfügen nur die beschriebenen slots eine Zahl ergeben
Wenn das Löschen sofort nach der Eingabe erfolgt, dann genügt das Vermindern des Indexes. Ansonsten alle nachfolgenden Elemente um 1 Position nach vorn kopieren.
Ich ahne, dass Du nur mit der Hälfte der Aufgabe rausrückst....
Eigentlich wäre der Tipp von @Tommy56 schon richtig, aber Du wirst vermutlich den Inhalt des Array irgendwo weiterverwenden wollen und stolperst jetzt darüber, dass da ja was drin steht und weiter verarbeitet wird.
Das passiert Dir aber immer, wenn Du das Array als numerisch definierst.
Das Ding ist mit 0 gefüllt.
Du musst also bei der Verarbeitung darauf achten, dass Du die Grenze von index nicht überschreitest.
Definierst Du das Array als char, könnte es helfen an der Stelle ein '\0' reinzuschreiben.
Das funktioniert aber nicht, wenn Du eine Korrektur machen willst und die Zahlen dahinter erhalten bleiben müssen.
myarray[] belegt RAM. Da steht einfach irgendwas drin. Das kannst du nicht verhindern.
Du kannst einen Wert für "Hier ist kein Inhalt" definieren und dann bei der Datenverarbeitung darauf prüfen.
Oder du sorgst dafür, das du nicht auf myarray[index] und höhere indexe zugreifst.
Ein Array kann man nicht löschen.
Auch einzelne Elemente eines Arrays kann man nicht löschen.
Man kann definieren, dass ein bestimmter Wert "gelöscht" bzw. "undefiniert" bedeuten soll.
Ob man dafür 0 oder -1 oder 999 nimmt, hängt davon ab, was gültige Werte sind und aus welchem Datentyp das Array besteht.
Es gibt auch andere Datencontainer als Arrays.
Was ein Tastenpad mit einem Array zu tun hat, wäre für das Verständnis deines Problems auch interessant. (Was verstehst du unter einem Array?)
Hi vielen Dank erstmal für die ganzen Antworten. Ja, war vielleicht etwas ungenau mit meiner Beschreibung (@my_xy_projekt) . Die der Plan ist, den Array (@michael_x ) also so wie ich es verstehe einen Strang an (in meinem Fall) Zahlen am ende zusammenzufügen zu einer Zahl (Die Eingabe vom User). Aber das was @Tommy56 sagt ist schon logisch, dann verschwindet ja die letzte Nummer im Array (oder?). Am Ende würde ich gerne den Array zusammenfügen und eine Zahl erhalten. Die Idee von @noiasca ist aber auch brilliant! Ich probier mal etwas rum, vielen vielen Dank, dieses Forum rettet mich!
Du hast so eine 4x4 Folientastatur oder irgendwie einzelne Tasten?
Wie löst Du das mit der Stelle und dem wieder zurück?
Und wo zeigst Du den Inhalt während der Eingabe an?
Ich hatte sowas mal für irgendjemanden geschrieben, da wurde auf einem Display angezeigt, was eingegeben und korrigiert wurde.
Ich würde das ja Zeichenweise mit einem char Array machen....
Ich hab mal geschaut, was die lib da macht.
Ok, das ist eine 3-Pin Tastatur, die auf einem Analogin Deine 12 Tasten abbildet.
Wenn Du jetzt 12 Tasten hast, dann wären die Tasten 0-9 Deine Ziffern.
Du könntest jetzt mit * und # nach links und rechts wandern.
Oder Du wanderst mit jedem Tastendruck immer nach rechts und gehst mit * zurück und löscht mit #
Bist Du am Ende der Zeile (20 auf dem Display) wird daraus eine Zahl gemacht.
Aber.....
Du hast schon bemerkt dass da nicht das passiert, was Du vor hast
Wenn Du aus int a einen unsigned long a machst, kannst Du größere Zahlen darstellen.
Ich überleg mal, wie ich das mit der Editiermöglichkeit löse würde und schau mal, was die lib so hergibt, wenn ich später Ruhe habe.