Forum: Mikrocontroller und Digitale Elektronik AVR32 Seltsames Verhalten bei sprintf


von Alex (Gast)


Lesenswert?

Hallo,

Ich verwende AVR32 Studio und einen UC3A und habe ein sehr seltsames 
Problem mit sprintf.
Wenn ich z.b.
1
sprintf(text, "testtext");
schreibe, dann funktioniert alles wunderbar, also auf text steht 
testtext.
Sobald ich aber
1
sprintf(text, "testtext %d", zahl);
schreibe, steht auf text nur mehr Müll bzw. zweitweise springt er auch 
in eine unhandled exception.

Ich habe hier schon viel Beiträge gelesen, aber so was ähnliches war 
leider nicht dabei, was mir Anhaltspunkte geben könnte. ÖFter war die 
Rede von zu wenig Stack, aber ich denke, das kann nicht das Problem 
sein.
Wo könnte ich im AVR32 Studio die Stackgröße ändern?

Ich hoffe, ihr könnt mir weiterhelfen!
mfg
Alex

von Marius W. (mw1987)


Lesenswert?

Wie ist denn die Variable test definiert? Groß genug, um den gesamten 
String aufnehmen zu können?

MfG
Marius

von Alex (Gast)


Lesenswert?

Ich denke schon..

text ist mit
1
char text[30];
 definiert und auf zahl steht 2. Es sollte sich also locker ausgehen.

von Benjamin S. (_benjamin_)


Lesenswert?

Hallo,

über dasselbe Problem bin ich gestern auch gestolpert, als ich einen 
String in ähnlicher Art und Weise formatieren wollte.
Das Problem ist wirklich die Routine "sprintf()" der Standard-Bibliothek 
<stdio.h>.

Atmel hat wohl per Supportanfrage bestätigt, dass dies ein 
Fehler/Problem ist. Siehe auch folgenden Link:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=67026

Als Ausweg kann man hier die Datei "printf-stdarg.c" benutzen. Dort ist 
die gewünschte sprintf-Funktion enthalten.
Allerdings wird anscheinend nur die Integerformatierung unterstützt.

Gruß, Benjamin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.