Forum: Mikrocontroller und Digitale Elektronik String-Variablen zusammensetzen


von Jens H. (Gast)


Lesenswert?

Hallo,

ich bin dabei mir eine einfache Uhr mittels AVR zu realisieren.
Jetzt hab ich drei Int-Variablen, sec_int, min_int und std_int.
Diese wandele ich dann fürs LCD um.
1
dtostrf(std_int, 2, 0, buffer);
2
lcd_puts(buffer);
3
lcd_putc(':');
4
dtostrf(min_int, 2, 0, buffer);
5
lcd_puts(buffer);
6
lcd_putc(':');
7
dtostrf(sec_int, 2, 0, buffer);
8
lcd_puts(buffer);

Jetzt meine Frage: kann ich das auch erst zu nem kompletten String 
zusammenführen und dann komplett zum LCD übertragen?

Weitere Frage: ich hab jetzt ein Zeitformat von z.B. " 1: 3:54"
Gibt es einen Befehl in C, mit der ich 2 Stellen incl führender Null 
erzeugen kann???


Gruß
Jens

von holger (Gast)


Lesenswert?

>dtostrf(std_int, 2, 0, buffer);
>lcd_puts(buffer);
>lcd_putc(':');
>dtostrf(min_int, 2, 0, buffer);
>lcd_puts(buffer);
>lcd_putc(':');
>dtostrf(sec_int, 2, 0, buffer);
>lcd_puts(buffer);

sprintf(buffer,"%02u:%02u:%02u",std_int,min_int,sec_int);
lcd_puts(buffer);

von dsfdsfs (Gast)


Lesenswert?

sprintf(...)

zB

von Klaus W. (mfgkw)


Lesenswert?

Jens H. schrieb:
> Jetzt meine Frage: kann ich das auch erst zu nem kompletten String
> zusammenführen und dann komplett zum LCD übertragen?

Ja.
Kostet aber Rechenzeit und Speicher.

Jens H. schrieb:
> Weitere Frage: ich hab jetzt ein Zeitformat von z.B. " 1: 3:54"
> Gibt es einen Befehl in C, mit der ich 2 Stellen incl führender Null
> erzeugen kann???

Wenn du sprintf() nimmst, dann ja (mit %02d z.B. im Formatstring).
Ob du eine Monsterfunktion wie sprinf() haben willst, steht auf
einem anderen Blatt.

Ansonsten musst du selbst die Länge feststellen und ggf. vorher die
'0' ausgeben.

von holger (Gast)


Lesenswert?

>Wenn du sprintf() nimmst, dann ja (mit %02d z.B. im Formatstring).
>Ob du eine Monsterfunktion wie sprinf() haben willst, steht auf
>einem anderen Blatt.
>
>Ansonsten musst du selbst die Länge feststellen und ggf. vorher die
>'0' ausgeben.

Wobei sich ab einer bestimmten Anzahl von Ausgaben sprintf()
dann doch wieder lohnt. Und man kann ja auch noch mehr damit
machen;)

von holger (Gast)


Lesenswert?

>Jetzt hab ich drei Int-Variablen, sec_int, min_int und std_int.

>dtostrf(std_int, 2, 0, buffer);

Wobei dtostrf() für int so ziemlich das letzte ist.
Das ist doch für floating point Werte.

von Jens H. (Gast)


Lesenswert?

ja ok, dachte nur es gibt vielleicht noch eine andere Möglichkeit
sprintf kostet natürlich einiges an Speicherplatz...

DANKE ERSTMAL

von Klaus W. (mfgkw)


Lesenswert?


von holger (Gast)


Lesenswert?

>itoa() vielleicht?

Formatiert den Text nicht.

von Klaus W. (mfgkw)


Lesenswert?

Aber jeweils eine Zahl.

von holger (Gast)


Lesenswert?

>>>itoa() vielleicht?

>>Formatiert den Text nicht.

>Aber jeweils eine Zahl.

Nö.

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.