Forum: Mikrocontroller und Digitale Elektronik itoa() / dtostrf() oder sprintf() zur Integer- / Floatwandlung


von Andreas (Gast)


Lesenswert?

Um Daten von integer bzw. float in einen String zu wandeln, unm diesen 
dann auf ein LCD Display auszugeben. - (ich nutze die Lib von Peter 
Fleury)

Sollten man da besser die itoa() bzw. dtostrf() oder die sprintf() 
Funktion benutzen?

Danke Andreas

von Karl H. (kbuchegg)


Lesenswert?

Andreas schrieb:

> Sollten man da besser die itoa() bzw. dtostrf() oder die sprintf()
> Funktion benutzen?

Die Frage kann man so nicht beantworten.
Es hängt auch von den Rahmenbedingungen ab, was "besser" ist.

sprintf bietet die meisten Möglichkeiten, kostet dafür aber auch den 
meisten Programmcode und ist die langsamste Möglichkeit. Wenn die 
Nachteile sich in einer Applikation nicht auswirken und man die Vorteile 
nutzen kann, spricht nichts dagegen diese Funktion auch zu verwenden.

Was ist besser um von A nach B zu kommen
Rad, Bahn, Bus, PKW, LKW

Kann man nicht beantworten. Wenn ich von A nach B will, weil ich einen 
Wohnungsumzug mache, wird ein Rad eher suboptimal sein. Wenn ich spät 
drann bin und erst auf den Zug warten muss, wird Bahn und Bus eventuell 
suoptimal sein, ein Rad aber nicht zu schlagen sein, wenn A nur 100 
Meter von B entfernt ist, etc.

Kurz und gut: Kenne deinen Werkzeugkasten und nimm das Werkzeug, welches 
dem Einsatzzweck angemessen ist.

von Andreas (Gast)


Lesenswert?

Danke Karl Heinz

ich fange leider erst gerade mit dem Radfahren an! ;)

Wenn ich ein WORD wandeln möchte muss ich sprintf() nehmen?
Bei iota() bekomme ich auf jedenfall -1.

Gruß, Andreas

von Falk B. (falk)


Lesenswert?

@Andreas (Gast)

>Wenn ich ein WORD wandeln möchte muss ich sprintf() nehmen?

Nein.

>Bei iota() bekomme ich auf jedenfall -1.

Dann stimmt was nicht.

MFG
Falk

von Bernd N (Gast)


Lesenswert?

>> Sollten man da besser die itoa() bzw. dtostrf() oder die sprintf()
>> Funktion benutzen?

Am besten nichts davon. Rechnen in "c" hats in sich und daher empfehle 
ich Dir mal ein paar kleine Rechnereien auszutesten. Am besten geht das 
auf dem PC oder du machst dir eine Ausgabe über USART aufs Terminal. 
Dann beginnst Du mit deinen Matheübungen und schaust mal mittels printf 
was dabei so herauskommt.

In 99.9% aller Fälle brauchst Du keine Lib Funktionen zur Ausgabe von 
ein paar Zahlen.

von Falk B. (falk)


Lesenswert?


von Michael M. (technikus)


Lesenswert?

Bernd N schrieb:
Ich persönlich setze itoa und dtostrf gerne ein. Sie sind deutlich 
platzsparender als sprintf und bieten trotzdem noch den Komfort, ohne 
eigene Routinen schnell was auszugeben.

> Am besten nichts davon. Rechnen in "c" hats in sich und daher empfehle
> ich Dir mal ein paar kleine Rechnereien auszutesten. Am besten geht das
> auf dem PC oder du machst dir eine Ausgabe über USART aufs Terminal.
Ob USART oder LCD ist doch egal. Vorher muß er aus der numerischen 
Variable einen String machen, denn sonst kann er mit einem Terminal nur 
sehr schlecht mitlesen.
Warum es rechnen in C in sich hat, möchte ich auch wissen. Wenn man sich 
im klaren ist, welchen Wertebereich die einzelnen Variablentypen haben, 
sehe ich wenig Gemeinheiten. Ok, casten (explizite Typumwandlung) muß 
man hin und wieder.

Servus
Michael

von Bernd N (Gast)


Lesenswert?

Er sagt ja das er Anfänger ist und gerade casten und Wertebereich sowie 
einzelnen Variablentypen zu kennen und zu verstehen ist nun mal das a 
und o.

>> Bei iota() bekomme ich auf jedenfall -1.

Das ist ein deutlicher Hinweis das er nicht in C rechnen kann.

von Andreas (Gast)


Lesenswert?

Danke! casten brachte bei der iota() mit der -1 Ausgabe Erfolg!

von Karl H. (kbuchegg)


Lesenswert?

Andreas schrieb:
> Danke! casten brachte bei der iota() mit der -1 Ausgabe Erfolg!

Das war höchst wahrscheinlich die falsche Lösungsmethode

itoa     wenn du einen int hast
utoa     wenn du einen unsigned int hast
ltoa     wenn du einen long hast
ultoa    wenn du einen unsigned long hast


Benutzte die richtige Funktion für den richtigen Zweck und hör auf die 
Dinge zurechtzucasten.

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.