sscanf surcery g++

Gast #2528720
Ich habe ein Problem, sobald ich die sscanf Funktion benutze, bekomme 
der stm32 einen HardFault error.

Die Compiler Optionen sind folgende:
-mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -O0 -g3 
-mfloat-abi=soft


Die ganzen Sachen, die ich im Projekt auswerten soll, ist mit pointern, 
atoi etc. auszuwerten ist mühsam und fehleranfällig. Deshalb möchte ich 
auf sscanf nicht verzichten. Gibt es da noch irgendeine Chance? Gibt es 
vielleicht abgespeckte sscanf Funktionen die extra für embedded Bereich 
gemacht sind?
Gast #2528766
>Läuft sscanf in
>einem minimal Beispiel in dem du nur einen int o. ä. einliest?
Nein z.B. läuft nicht:
1
int i;
2
char str[20];
3

4
sscanf("hello 0815", "%s%d", str, &i);
5
printf("%s %d", str, i);
Gast #2528798
Ich habe jetzt zufälligerweise die o.g. Funktion in main() ausprobiert
bevor LwIP initialisiert wird und siehe da, es kommt zu einer printf 
Ausgabe und dann zum  HardFault error. Ich vermute, dass für die sscanf 
irgendwo ein buffer fester Größe reserviert wird? Und durch dir 
Speicherreservierung des LwIP Stacks kommt es zum HardFaul? kann man die 
Buffergröße vom sscanf beeinflussen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.