Hallo Alle, ich bins mal wieder. Ich haben ein 4x20 Display mit der Peter Fleury lib. laufen. Wenn ich jetzt den Wert einer Variablen auf dem Display ausgeben will sage ich: lcd_gotoxy(14,0); itoa(temp1,string1,10); lcd_puts (string1); Das Funktioniert ja vom Prinzip auch aber wenn die Zahl von bspw. drei auf zwei Stellen schrumpft, dann bleibt halt eine parasitäre Null stehen. Was mache ich falsch? Vielen Dank schon mal an alle fleißigen Forianer. Ciao René
Ich habe zwar nicht genau verstanden, was du meinst. Aber du kannst vor Anwenden von itoa dein string1 z. B. mit memset auf 0 setzen. Also zum Beispiel_ unsigned char string1[10]; ... memset(string1,0,10); itoa(..); lcd_puts(..); Thorsten
Das liegt nicht an itoa, sondern daran, daß - ohne das Display zu löschen - nacheinander unterschiedlich lange Strings ausgegeben werden. Die "Reste" des längsten Strings bleiben so erhalten, Werden nacheinander die Strings "Apfelkuchen" und "Birne" ausgegeben, so steht auf dem Display "Birnekuchen" ... Abhilfe wäre hier das Auffüllen des Strings auf eine definierte Länge oder aber das vorherige Ausgeben eines Strings mit der maximal zu erwartenden Anzahl an Leerzeichen.
ja, stimmt genau, was rufus sagt, ausserdem ist die itoa() "left adjusted", also bleiben die "rechten" symbole eines alten strings aufm display stehen
Hi @all, danke für die schnellen Antworten. Welches ist denn die eleganteste Lösung? Leider bin ich blutiger c Anfänger. Wenn ich so schreibe: lcd_gotoxy(14,3); memset(string4,0,10); itoa(temp4,string4,10); lcd_puts(string4); dann geht es nicht. Wie würde denn der Code aussehen wenn man den String auf eine definierte Länge setzt. Danke und Ciao René
ich nochmal... ich schreibe jetzt als erstes vier Leerzeichen und dan den neuen Wert. So funktioniert es, aber man sieht es dem Werte an, er steht nämlich leicht zitterig auf dem Display. Besser wäre eine Lösung bei der man nicht den ganzen Wert einmal löschen muss. Danke im Voraus René
Dann bestimme doch die Länge des von itoa erzeugten Strings, rechne aus, wieviele Leerzeichen fehlen und gib die nach dem Ausgeben des Strings aus, wenn mehr als 0.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.