Forum: Mikrocontroller und Digitale Elektronik Probleme mit Float in String umwandeln


von Jörg (Gast)


Lesenswert?

Hi und hallo zusammen,

ich versuche eine Float-Variable in einen String umzuwandeln, um diesen 
dann über UART auszugeben. Leider funktioniert das nicht so wie es soll.

Wenn ich das wie folgt mache, erhalte ich nur ein Fragezeichen als 
Ergebnis, wenn ich mir die gesendeten Daten auf dem PC im 
Terminalprogramm anschaue.
1
char data[8];
2
3
sprintf(data, "%f", "3.125");
4
puts(data);

Wenn ich eine Variable habe, in der z.B. 20,123 ; mit dem Debugger 
überprüft; drin steht und ich nun Folgendes schreibe, erhalte ich 
ebenfalls nur ein Fragezeichen als Ausgabe am PC:
1
float val;
2
.....
3
4
sprintf(data, "%f", val);


Jemand eine Idee, was ich da falsch mache?

Jörg

von float (Gast)


Lesenswert?

Jörg schrieb:
> char data[8];
>
> sprintf(data, "%f", "3.125");
> puts(data);

printf("%f", 3.125);

von g457 (Gast)


Lesenswert?

> nur ein Fragezeichen als Ergebnis

Kuckst Du Doku -> Linkeroptionen anpassen.

HTH

von Jörg (Gast)


Lesenswert?

Hallo,

g457 schrieb:
> Kuckst Du Doku -> Linkeroptionen anpassen.

Ich habe jetzt Folgendes gemacht:
1
Unter
2
Project Properties -> Toolchain -> AVR/GNU C- Linker -> Libraries
3
in Libraries (-WI, -I), libprintf_flt.a und libm.a eintragen.
4
5
dann unter
6
Project Properties -> Toolchain -> AVR/GNU C- Linker -> Miscellaneous
7
in Other Linker Flags, -Wl,-u,vfprintf eintragen

Aus Beitrag Beitrag "Re: AVR Studio 5, sprintf, float und linken?"
oder http://www.mikrocontroller.net/articles/FAQ#sprintf.28.29


Damit funktioniert es dann.

Danke!
Jörg

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.