sccanf schreibt Daten in falsche Pointer
-
Hallo!
Folgendes einfaches Beispiel will einfach nicht funktionieren:
char encoding = 0, result = 0; char rest[4096]; int res = sscanf("1a", "%c%c", &encoding, &result, rest); printf("%c -> %c -> %i\n", encoding, result, res);
Wenn ich das so laufen lasse, steht in encoding '1' (ascii 49) wie das sein soll.
In result steht 0, also der numerische Wert und nicht das Zeichen 0.
Und in rest steht dann a sowie restliche Teile vom nicht initialisiertem char array.Kann mir bitte jemand auf die Sprünge helfen, warum nicht einmal dieses einfache Programm funktioniert. Komischerweise steht in res auch 2 drin, also beide Parameter wurden korrekt gelesen. Ich habe auch zig andere Varianten probiert. Ohne rest tut überhaupt nichts mehr, bekomme ungültige Pointer Probleme.
Danke!!!
-
Bei mir klappt es wie erwartet problemlos...
-
Fragen nach sscanf gehören wohl eher ins C-Forum. Der Parameter rest ist ein Parameter zuviel, könnte möglicherweise dein Problem sein.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Habe mittlerweile festgestellt an was es lag. Der Code war teil eines größeren Projektes. In einem Header wurde von sscanf auf sscanf_s verwiesen via #define. Da kann man natürlich noch so lange suchen, wenn man nicht einmal schaut wo der Spaß definiert ist.
Trotzdem Danke an die die helfen wollten!
PS: Sorry für die falsche Kategorie, tue mich beim einsortieren doch noch schwer