Forum: Mikrocontroller und Digitale Elektronik wiedereinmal sprintf()


von tobias hofer (Gast)


Lesenswert?

Hallo

Ich habe einen Wert PF = 1234; Dieser Wert sollte in Display_Buffer
geschrieben werden als "1.234". Das funktioniert.
Ist der Wert PF nun aber PF = 0034, müsste im Dispay_Buffer folgendes 
stehen
"0.034" es steht jedoch 0.34 drinn. Wie kann ich das ändern?

          sprintf(Display_Buffer,"%1d.%-3d",Power.pf/1000,Power.pf%1000);

Freundliche Grüsse

von antworter (Gast)


Lesenswert?

0034 % 1000 = 34 dürfte klar sein

da ich meist manuell formatiere: warum schreibst du %-3d ? sollte es 
nicht einfach nur %3d sein ?

einfachste lösung:

modval = x % 1000;

if (modval < 10)  sprintf(Display_Buffer,"0");
if (modval < 100) sprintf(Display_Buffer,"0");

sprintf(Display_Buffer,"%d", modval);

von Karl heinz B. (kbucheg)


Lesenswert?

> warum schreibst du %-3d ? sollte es
> nicht einfach nur %3d sein ?

Das mit dem - ist richtig. Ist hier völlig unnötig.
Allerdings sollte es %03d heissen. Dann werden auch
führende Nullen eingefügt.


von tobias hofer (Gast)


Lesenswert?

Besten Dank, klappt bestens.

Da ich schon ein paar mal Problem mit dem grossen umfang der printf() 
funktion hatte, kennt jemand einen guten linkt oder tut. mit den ganzen 
formatierungen?

Gruss

von Andreas W. (Gast)


Lesenswert?


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.