Hallo, wollte mal nachfragen ob man mit dem sprintf-Befehl eine Float-Zahl nach Ascii umwandel kann und wie???
Gast
#1590996
Hi, sprintf(buf, "%f", floatvar); Besser verwendest du aber um buffer overflows vorzubeugen snprintf: snprintf(buf, sizeof(buf), "%f", floatvar); Grüße, Daniel
Gast
#1591002
Allg. Syntax: int sprintf ( char * str, const char * format, ... ); Beispiel: char string[50]; float floatzahl; sprintf(string, "%f", floatzahl);
Gast
#1591003
Ups, da war einer schneller... ;-)
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?
(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 | |
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
Ja stimmt benutze ein PIC aber das mit dem Linken versteh ich nicht richtig.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.