itoa() / dtostrf() oder sprintf() zur Integer- / Floatwandlung

#1604417
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.
Gast #1604510
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.
#1604531
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
Gast #1604565
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.
#1605295
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren