Hab einfach mal dein Codestück oben ein bißchen umgeschrieben:

Code:
void LongToString(long wert, unsigned int laenge, char* s) {
	int i;
	
	for(i = 0; i < laenge; i++) {
		s[laenge-i-1] = (wert % 10) + 48;
		wert = wert / 10;
	}
	s[laenge] = '\0';
}
Aufruf dann mit:

Code:
char s[10];

long x = 1234567;

LongToString(x, 7, s);
Wenn ich jetzt auf die schnelle nichts übersehen habe, dann sollte das funktionieren. Man könnte das vielleicht noch etwas beschleunigen mit der div() funktion ( siehe avr-libc Doku ).

MfG Kjion