hallo, ich habe ein problem mit der funktion snprintf. bisher habe ich auf mein lcd nur ints ausgegeben so: snprintf(s,6,"%u",counter) wobei counter int s car[8] ist funktioniert einwandfrei. nun wollte ich eine double/float variable ausgeben. laut doku sollte es so gehen: snprintf(s,8,"%4.2f",f) f ist float und s char[8] wie oben. geht aber nicht. gibt ? aus oder unsinn wenn ich sprintf verwende. habe auch alsformatstring %u und %d probiert hilft nix, kann mir jemand mit dieser funktion helfen oder mir sagen wie ich ein float auf dem lcd ausgeben kann? gruss ralf
Du musst noch die Float-Version von printf im Makefile aktivieren: ... #---------------- Library Options ---------------- # Minimalistic printf version PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min # Floating point printf version (requires MATH_LIB = -lm below) PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt # If this is left blank, then it will use the Standard printf version. #PRINTF_LIB = #PRINTF_LIB = $(PRINTF_LIB_MIN) PRINTF_LIB = $(PRINTF_LIB_FLOAT) ...
hallo, danke für den tip, ich habe die schon eingebunden. ändert allerdings nichts, möglicherweise liegts an meinen lcd routinen, wobei ich keinen fehler sehe. wenn jemand noch einne anderen tipp hat, würde ich mich freuen. zur zeit habe ich mir damit beholfen, dass ich die funktion dtostrf verwende. hiermit gehts: dtostrf(f,6,2,s); display_string(s); wobei s char[10] und f double ist. 6,2 ist die precision. ich verwende gcc. gruss
Ist deine Zahl möglicherweise zu lang? Wenn die Zahl mehr als 8 Stellen (mit Komma) hat, dann schreibt snprintf() keine NULL ans Ende des Strings bzw. sprintf über den String hinaus.
hi , danke habe ich auch schon gedacht , aber ich habe für das \0 extra noch eine stelle reserviert. gruss ralf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.