sprintf float

Gast #5012119
Hallo Dirk,

wo wird dir dieses Ergebnis angezeigt?
Auf einem LCD? In einer Konsole?
Hab keine Schäu und hau raus mit den Informationen :)

Liebe Grüße
Gast #5012154
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
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
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
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
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 ..).
Gast #5012463
meines wissens gibt die zahl vor dem Punkt die Breite des gesamten 
Strings an. darf also nicht kleiner sein als die zweite Zahl.

i.e.

%5.2f

gibt dir maximal 99.99
Moderator Persönliche Seite #5012473
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.