avrgcc printf "width" Option ?

Gast #938557
Lesenswert?

Moin!

ich versuche gerade einen signed long so auszugeben:
1
sprintf(temp, "%010ld", value);

Es wird aber weder mit Nullen noch mit Leerzeichen aufgefüllt, sondern 
"ganz normal" gewandelt (z.b. 23 -> "23" anstatt "0000000023"). 
Vermutlich ist das in der printf Funktion im AVRGCC nicht enthalten, 
aber wie könnte ich soetwas am einfachsten nachrüsten ?
Gast #938598
Lesenswert?

Bei mir gehts!

OK, mal ernsthaft:
WinAVR20071221 mit AVR-Studio 4.14 und dessen Makefile + Atmega8 zeigt, 
dass folgendes im Simulator funktioniert (ich habe nicht weiter 
getestet, weil ich dein Problem scheinbar nicht nachstellen kann).
1
char temp[20];
2
sprintf(temp, "%010ld", 23L);
3
// temp enthaelt dann
4
// {'0', '0', '0', '0', '0', '0', '0', '0', '2', '3', 0}
Verrat' mehr details!

hth, Jörg
Gast #938636
Lesenswert?

Ok, ich habe die hier, vor einigen Tagen erst heruntergeladen und 
installiert:

avr-gcc (WinAVR 20080610) 4.3.0

In die libc Doku hatte ich schon geschaut, aber leider falsch 
verstanden. Ich dachte es gibt nur MIN und FLT, aber die dazwischen ist 
die Richtige, Danke!

Dann für alle die das gleiche Problem haben und auf diesen Beitrag 
stoßen, hier ist der entsprechende Teil im makefile:
1
#---------------- Library Options ----------------
2
# Minimalistic printf version
3
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
4

5
# Floating point printf version (requires MATH_LIB = -lm below)
6
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
7

8
# If this is left blank, then it will use the Standard printf version.
9
PRINTF_LIB = 
10
#PRINTF_LIB = $(PRINTF_LIB_MIN)
11
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)

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