Forum: Mikrocontroller und Digitale Elektronik float->ASCII?


von Andi C. (spex)


Lesenswert?

Hallo, wollte mal nachfragen ob man mit dem sprintf-Befehl eine 
Float-Zahl nach Ascii umwandel kann und wie???

von Daniel Nöthen (Gast)


Lesenswert?

Hi,

sprintf(buf, "%f", floatvar);

Besser verwendest du aber um buffer overflows vorzubeugen snprintf:
snprintf(buf, sizeof(buf), "%f", floatvar);

Grüße,
Daniel

von rigo (Gast)


Lesenswert?

Allg. Syntax: int sprintf ( char * str, const char * format, ... );

Beispiel:
char string[50];
float floatzahl;
sprintf(string, "%f", floatzahl);

von rigo (Gast)


Lesenswert?

Ups, da war einer schneller... ;-)

von Andi C. (spex)


Lesenswert?

Hi, hab das ganze wie oben deklariert, die floatzahl sollte 2,54 
betragen, allerdings erscheint beim Terminal dann nur ein Viereck???

char string[50];
float floatzahl;
sprintf(string, "%f", floatzahl);

Kann der Fehler daher kommen das ich die floatzahl vorher in das TXREG 
schiebe und muss man eine Zahl od Char überhaupt in das TXREG schieben 
wenn man dann den Wert mit sprintf oder putc ausgibt?

von David M. (md2k7)


Lesenswert?

(Folgendes gilt nur für AVR-GCC - ich muss hier raten, da nichts 
angegeben wurde:)

Standardmäßig wird eine minimalistische printf-Version ohne 
Fließkomma-Unterstützung gelinkt. Die sollte aber eigentlich an den 
fraglichen Stellen Fragezeichen '?' anzeigen.

Um die volle Version zu bekommen, muss man mit diesen Optionen linken:
1
-Wl,-u,vfprintf -lprintf_flt -lm

Siehe auch 
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#ga3b98c0d17b35642c0f3e4649092b9f1

Nachtrag: TXREG klingt doch eher nach PIC o.ä. -> prüfen, ob nicht 
vielleicht auf die gleiche Art Speicher gespart wird und dies mit 
entsprechenden Optionen abgeschaltet werden muss.

Gruß
David

von Andi C. (spex)


Lesenswert?

Ja stimmt benutze ein PIC aber das mit dem Linken versteh ich nicht 
richtig.

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.