[S] "selfmade" sprintf()- Funktion:)

Gast #2165688
Lesenswert?

Schönen guten Abend,

ich programmiere gerade ein LPC2478 mit WinARM und mir ist aufgefallen, 
dass die sprintf()-Funktion zusammen mit den Routinen aus der newlib-lpc 
eine Größe von 36kB !! einnehmen. Eindeutig zuviel nach meinem 
Verständnis. Habe mich deshalb entschlossen die Funktion selbst zu 
schreiben, doch bevor ich damit anfange, dachte ich mir, fragst du hier 
freundlich nach, ob die selbsgeschriebene Variante bei jemandem schon 
auf der Festplatte irgendwo rumoxidiert.
Wenn nicht ist auch nicht schlimm, wie gesagt dann schreibe ich meine 
eigene und werde diese bei Interesse hier publik machen.

Gruß
Alex
Gast #2165699
Lesenswert?

> dann solltst du sagen auf was du verzichten kannst

ich möchte nur integer- und float-Zahlen in einen String wandeln. Bei 
integer max 5 Stellig und bei float max 3 stellig vor und 2 stellig nach 
dem Komma. Auf alles andere kann ich verzichten.
Persönliche Seite #2165716
Lesenswert?

Alex schrieb:
>> dann solltst du sagen auf was du verzichten kannst
>
> ich möchte nur integer- und float-Zahlen in einen String wandeln. Bei
> integer max 5 Stellig und bei float max 3 stellig vor und 2 stellig nach
> dem Komma. Auf alles andere kann ich verzichten.
int number = 12345; char sign = '+';
if (number < 0) { number *= -1; sign = '-'; }
char text [6]; int i;
for (i = 5; i >= 1 && number != 0; i--) {
  text [i] = (number % 10) + '0';
  number /= 10;
}
text[i]=sign;
Gast #2165770
Lesenswert?

@ Niklas Gürtler:

Ich muss schon sagen!Raffiniert! Sind die paar Zeilen Code einfach so 
mal aus dem Kopf geschossen oder hast du den schon irgendwo gehabt? Bin 
zwar auch etwas bewandert in der Materie aber so schnell hätte ich den 
nicht einmal reinpasten können.
Bisher ist dein Code zumindest für die integer-Wandlung am kürzesten und 
funktioniert ohne auch nur ein Pünktchen zu ändern (siehe Bild rote 
Zahlen)
Angehängte Dateien:

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