Nee hat leider nicht geklappt... Um meinen Flash meines Asuros zu schonen, hab ich den Code erstmal mit Dev-C++ getestet. Dann kam folgender Linkererror: undefined reference to dtostre. Dann hab ich's mal mit WinAVR compiliert. Da gab's keinen Fehler, dafür haben diese paar Zeilen Code 58 % meines Flashs verschwendet (so das Script avr-sizex). Gibt's da nicht noch ne andere Lösung, so ne Eigenkreation?
Für long/int-Werte hatte ich das gleiche Problem. Ich hab dann im Buch "C von A bis Z" folgenden Code für das umwandeln einer long-Variable in einen String:
Code:
char *LongToString(long wert, unsigned int laenge) {
char *ret = (char *) malloc(laenge + 1 * sizeof(char));
int i;
for(i = 0; i < laenge; i++) {
ret[laenge-i-1] = (wert % 10) + 48;
wert = wert / 10;
}
ret[laenge] = '\0';
return ret;
}
Nur verschwendet der Aufruf von malloc() unheimlich viel Flash (> 10 %). Für was braucht man das malloc() überhaupt? Kann diese Funktion nicht auch einfach ein bisschen abändern, damit sie auch double-Werte konvertiert? Wär perfekt, wenn mir jemand zwei Funktionen + Beispiel zu den oben genannten Problemen liefern kann! Ich kenn mich nämlich in C noch nicht so aus und wenn man mal Java kann weiß man was eine wirklich gute Sprache unterscheidet (diese ganzen kryptischen Zeichen unter C bereiten mir Kopfschmerzen!
)...
cu
Lutz
Lesezeichen