Forum: Mikrocontroller und Digitale Elektronik Kommazahl rechtsbündig auf Display


von rene (Gast)


Lesenswert?

Hallo Alle,

wie kann man denn eine Kommazahl rechtsbündig auf ein Display schreiben
und links die restlichen Felder des Arrays mit Leerzeichen auffüllen?
Gibt es dazu etwas zum Lesen oder eine Funktion??

Vielen Dank im Voraus

René

von Rufus T. Firefly (Gast)


Lesenswert?

In C formatiert man floating-Point-Ausgaben mit der dafür geeigneten
Funktion printf(). Diese benötigt zwar viel Speicher und ist daher bei
einfacheren Aufgaben besser nicht zu verwenden, aber hier ist sie
praktisch.

Mit dem Formatspezifizierer "%n.mf"
  n - Feldbreite
  m - Präzision (anzahl Nachkommastellen)

lässt sich so etwas hinbekommen.
Ist die Feldbreite länger als die resultierende auszugebende Zahl, so
wird rechtsbündig mit führenden Leerzeichen ausgegeben.

Beispiel

  printf("%10.2f", x);

Durch Voransetzen eines '-' vor die Feldbreite wird linksbündig
ausgegeben und mit folgenden Leerzeichen aufgefüllt.

  printf("%-10.2f", x);

Durch voransetzen einer 0 werden statt führender Leerzeichen führende
Nullen ausgegeben:

  printf("%010.2f", x);

(010 wird hier nicht als oktale Zahl interpretiert)

Diese Syntax kann auch bei nicht-floatingpoint-Zahlen und auch Strings
angewandt werden:

  printf("%08X", i);

  printf("%8d", i);

  printf("%13s", string);


Für die Ausgabe auf ein LC-Display erscheint der Gebrauch von
snprintf() (printf in längenbegrenzten Puffer) sinnvoll.

von rene (Gast)


Lesenswert?

Hallo Rufus T. Firefly,

ich benutze einen ATMega128. Kennt der printf oder snprintf Befehle??

Ciao und danke für die schnelle Antwort.

René

von rene (Gast)


Lesenswert?

äh ich meine natürlich: meine Display lib kennt nur "puts" und
"putc".
Man müsste sich es schon vorher zurechtbauen und dann nur noch aufs
Display schießen.

René

von Rufus T. Firefly (Gast)


Lesenswert?

sprintf/snprintf gehören in die Standard-Library des C-Compilers.

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
Noch kein Account? Hier anmelden.