sprintf_s mit einem zu kleinen Puffer

Der folgende Code verursacht einen Fehler und beendet meine Anwendung. Dies ist sinnvoll, da der Puffer nur 10 Byte und der Text 22 Byte lang ist (Pufferüberlauf).

char buffer[10];    
int length = sprintf_s( buffer, 10, "1234567890.1234567890." ); 

Wie kann ich diesen Fehler abfangen, um ihn zu melden, anstatt meine Anwendung zum Absturz zu bringen?

Bearbeiten:

Nachdem ich die Kommentare unten gelesen hatte, habe ich mich für _snprintf_s entschieden. Wenn ein -1-Wert zurückgegeben wird, wurde der Puffer nicht aktualisiert.

length = _snprintf_s( buffer, 10, 9, "123456789" );
printf( "1) Length=%d\n", length ); // Length == 9

length = _snprintf_s( buffer, 10, 9, "1234567890.1234567890." );
printf( "2) Length=%d\n", length ); // Length == -1

length = _snprintf_s( buffer, 10, 10, "1234567890.1234567890." );
printf( "3) Length=%d\n", length ); // Crash, it needs room for the NULL char 

Antworten auf die Frage(6)

Ihre Antwort auf die Frage