www.mikrocontroller.net

Forum: Compiler & IDEs avrgcc printf "width" Option ?


Autor: Ja mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

ich versuche gerade einen signed long so auszugeben:
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 ?

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).
char temp[20];
sprintf(temp, "%010ld", 23L);
// temp enthaelt dann
// {'0', '0', '0', '0', '0', '0', '0', '0', '2', '3', 0}
Verrat' mehr details!

hth, Jörg

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtige Lib verwenden. Eine der Versionen ist etwas eingedampft um 
Platz zu sparen. Steht in der Doku vom avr-libc: 
http://www.nongnu.org/avr-libc/user-manual/group__...

Autor: Ja mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#---------------- 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.