Forum: Mikrocontroller und Digitale Elektronik sprintf() Formatierung als Parameter übergeben - Problem


von Pierre (Gast)


Lesenswert?

Hallo zusammen,

ich möchte auf meinem atmega 32 einen mit variabler Formatierung einen 
String erzeugen.
Hierzu möchte ich die Funktion sprintf() benutzen:
1
sprintf(stringname, "%*.*f", laenge, nachkomma, variable);
Quelle z.B.: http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/

Die Fließkommazahlen-Unterstützung für sprintf() ist aktiviert, 
allerdings klappt das mit den Sternchen für die Formatierung überhaupt 
nicht.
Scheinbar wird dies nicht unterstützt? Ich habe hierzu leider keine 
Infos gefunden.

Wird dieses "Feature" generell nicht unterstützt, oder muss ich noch 
irgendwas einbinden?

compiler: gcc 4.3.2

Danke & Grüße
Pierre

von Oliver (Gast)


Lesenswert?

>Ich habe hierzu leider keine Infos gefunden.

Die Doku zur avr-libc findest du auf deiner Festplatte und im Inetrnet.

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Pierre schrieb:

> Wird dieses "Feature" generell nicht unterstützt, oder muss ich noch
> irgendwas einbinden?

Dazu kann ich wenig sagen, kenn da die Implementierung von sprintf 
zuwenig. Du solltest allerdings daran denken, dass aufgrund 
Platzbeschränkungen in einem µC höchst wahrscheinlich nicht alles was in 
so einem Formatstring möglich ist, unterstützt werden wird. Vor allem 
dann nicht, wenn es relativ einfach ist, sich selbst Abhilfe zu 
schaffen.
1
....
2
3
   char fmtString[15];
4
5
   sprintf( fmtString, "%%%d.%df", laenge, nachkomma );
6
   sprintf( stringname, fmtString, variable );

von MeinerEiner (Gast)


Lesenswert?

Was heisst denn "Formatierung klappt nicht"? Was wird denn stattdessen 
ausgespuckt?

von Pierre (Gast)


Lesenswert?

Hallo zusammen,

also ich habe mich jetzt mal durch die Tiefen der Dokumentation gewühlt. 
Die variablen Formatierungseigenschaften werden nicht unterstützt.

Deshalb mache ich es jetzt gemäß dem Vorschlag von Karl Heinz, was den 
gleichen Zweck erfüllt. Vielen Dank!

Grüße
Pierre

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.