www.mikrocontroller.net

Forum: Compiler & IDEs Uhrzeit formatieren...


Autor: Steffen Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

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

Was besseres fällt mir nicht ein.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf(Puffer, "Uhr: %02d:%02d:.......

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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é. ;-)

Autor: Steffen Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn das für ein Compiler?

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es handelt sich um avr-gcc

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist doch der gleiche Compiler - vielleicht mal die Runtime updaten?!

Autor: Bernhard Walle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.