sprintf float

Gast #5012154
Lesenswert?

Hallo,

ich verwende µVision 5.23 ( MDK Cortex M).

Der String wird zeichenweise auf einem Grafik-Display ausgegeben.

Statt einem "." oder auch gerne einem "," erhalte ich halt das 
Sonderzeichen "ñ" (Buffer[2] = "164")

Mit allen anderen Variablen-Typen funktioniert sprint, nur mit float 
nicht ?!?
Gast #5012323
Lesenswert?

Ich selber vermute etwas in Richtung Stack-Overflow. Nur warum ?
Ich werde das Problem erst einmal umgehen (Aufspalten in Integer, ...), 
aber ganz ehrlich, ich wuerde schon gerne wissen, wo mein Fehler liegt!
Danke schon mal fuer die schnellen Antworten !
Moderator Persönliche Seite #5012355
Lesenswert?

Hast du denn den Sourcecode der Bibliothek?  Dann könntest du ja mal
versuchen, das nachzuvollziehen.  Weiß nicht, wie das bei Keil ist,
bei IAR bekommt man den wohl mitgeliefert, und bei den
Opensource-Toolchains hat man ihn ja sowieso.

Ist denn nur der Punkt betroffen, d. h. wenn sich die Zahl ändert,
stimmen die Ziffernwerte trotzdem noch?
Gast #5012363
Lesenswert?

Jörg W. schrieb:
> Hast du denn den Sourcecode der Bibliothek?  Dann könntest du ja
> mal
> versuchen, das nachzuvollziehen.  Weiß nicht, wie das bei Keil ist,
> bei IAR bekommt man den wohl mitgeliefert, und bei den
> Opensource-Toolchains hat man ihn ja sowieso.
>
> Ist denn nur der Punkt betroffen, d. h. wenn sich die Zahl ändert,
> stimmen die Ziffernwerte trotzdem noch?

Die Ziffern werden richtig in Zeichen umgewandelt, egal welche Ziffer, 
egal wie viele Nachkommastellen , nur das Komma nicht.
Gast #5012432
Lesenswert?

Jörg W. schrieb:
> In der Tat seltsam.
>
> Mach doch einen Support-Fall bei Keil auf dafür.

Das werde ich wohl machen, werde das Ergebnis hier veroeffentlichen.
Ich bin das Problem erst einmal mit einer eigenen Funktion umgangen.
Aufspalten in zwei Integer Variablen und dann sprintf(.%d,%d ..).
Moderator Persönliche Seite #5012473
Lesenswert?

mostefan schrieb:
> darf also nicht kleiner sein als die zweite Zahl.

Dein Wissen ist nur im ersten Teil des Satzes richtig; die zitierte
Schlussfolgerung hingegen ist falsch.  Das war bei BASIC und FORTRAN
(und wohl auch COBOL) so, bei C ist definiert, dass der String
automatisch so breit wird wie nötig, auch wenn die angegebene Breite
nicht ausreichen sollte.

Die Ausgabe eines Dezimalpunktes als irgendein wahlloses Zeichen
würde es allemal nicht rechtfertigen.

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