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


  • Mod

    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)
    

Anmelden zum Antworten