sscanf_s - Ausnahmefehler , Zugriffsverletzung
-
Hallo,
wenn ich folgendes Programm ausführe, bekomme ich folgende Fehlermeldung:
Ausnahmefehler bei 0xFEFEFEFE in sprintf.exe: 0xC0000005: Zugriffsverletzung beim Ausführen an Position 0xFEFEFEFE
wobei
sprintf.exe
der Name meines Programms ist.
int main(void) { int a = 0, b = 0; char buffer[1024]; char message[1024]; std::cout << sprintf_s(buffer, "%d %s %d", 123, "hello", 456) << std::endl; std::cout << sscanf_s(buffer, "%d %s %d", &a, message, &b) << std::endl; getchar(); return 0; }
Das Programm soll mittels sprintf_s folgenden String in buffer speichern "123 hello 456" und tut dies auch. Anschließend sollen die Werte wieder extrahiert Werden. Wenn ich aber sscanf_s ausführe, bekomme ich oben genannten Fehler. Zudem passiert es, dass das "hello" korrekt in message steht, aber die Variablen a und b zufällige Integer Werte haben.
Sieht jemand den Fehler?
Mit freundlichen Grüßen,
VRComputing
-
Was ist, wenn du Längenangaben machst, wie die Dokumentation von (s)scanf_s es verlangt? Du hast die Doku doch gelesen und nicht einfach ein _s an ein normales sscanf angehängt, oder?
Da du im C++-Forum fragst: Spricht etwas dagegen, gleich richtiges C++ zu machen, anstatt C mit cout und herstellerspezifischen Erweiterungen?
-
Danke für deine Antwort. Deine Dokumentation war besser. Und ja die Längenangabe des Arrays nach dessen Angabe hat das Problem gelöst.
sscanf_s(buffer, "%d %s %d", &a, message, 1024, &b)