Forum: Compiler & IDEs Uhrzeit formatieren...


von Steffen Brüggemann (Gast)


Lesenswert?

Hallo...

Im Moment stelle ich die Uhrzeit wie folgt auf einem LCD dar, bzw.
schicke die Daten zum LCD:

sprintf(Puffer, "Uhr: %i:%i:%i   ", UhrStunde, UhrMinute,
UhrSekunde);
LCDText(0,3, Puffer);

Das funktioniert auch soweit. Angezeigt wird dann logischerweise:
8:45:32.

Wie kann ich es machen, dass führende Nullen immer mit angezeigt
werden? Also 08:45:32.
Irgendwie steh ich da auf dem Schlauch...

Danke schon im Vorraus!

Gruß,
Steffen Brüggemann

von Alex (Gast)


Lesenswert?

if (UhrStunde < 10)
{
    sprintf(Puffer, "Uhr: 0%i:%i:.......
    ....
}
else
    ....

Was besseres fällt mir nicht ein.

von Werner B. (Gast)


Lesenswert?

sprintf(Puffer, "Uhr: %02d:%02d:.......

von André (Gast)


Lesenswert?

> sprintf(Puffer, "Uhr: %02d:%02d:.......

Diese Formatanweisung unterstützt das von Steffen verwendete sprintf
aber leider nicht. (Zumindest hat es das damals nicht...)

André. ;-)

von Steffen Brüggemann (Gast)


Lesenswert?

@Alex:
Diese Idee hatte ich auch schon, nur gibt es dann ja 8 Möglichkeiten,
da nicht nur die Stunde abgefragt werden muss, sonder auch noch die
Minute und die Sekunde.

@Werner B. u. André
sprintf(Puffer, "Uhr: %02d:%02d:.......

Das funktioniert in der Tat nicht. Diese Lösung hatte mir schonmal
jemand vorgeschlagen, daher habe ich das mal getestet.

Gruß,
Steffen

von Werner B. (Gast)


Lesenswert?

Was ist denn das für ein Compiler?

von Werner B. (Gast)


Lesenswert?

Mit WinAVR aktuelle Version von avrLibC

snprintf_P(buffer, 20, PSTR("   %02d:%02d:%02d %-6S"),
                    tm.tm_hour, tm.tm_minute, tm.tm_second, dst);

NULL problemo

von Steffen Brüggemann (Gast)


Lesenswert?

es handelt sich um avr-gcc

von Werner B. (Gast)


Lesenswert?

Ist doch der gleiche Compiler - vielleicht mal die Runtime updaten?!

von Bernhard Walle (Gast)


Lesenswert?

Also dem Compiler ist das egal, das ist Sache der avr-libc. Einfach mal
auf die neueste Version updaten (IIRC 1.2.3), und wenn's dann nicht
geht, einfach mal einen Bugreport an die Entwickler schreiben.

Für die Zwischenzeit musst du den Code halt selber von Hand schreiben.

von Jörg Wunsch (Gast)


Lesenswert?

Nö, das geht schon immer.

Man sollte natürlich nicht die Minimalversion von printf() benutzen --
die unterstützt keine field width.  Die Standardversion tut aber.

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.