Das Problem ist wahrscheinlich etwas einfaches, aber ich konnte es nicht nach Stunden der Forschung und Bearbeitung zu arbeiten, also hier posten ich mein Problem.sprintf_s() scheitert mit "Debug-Assertion fehlgeschlagen" Fehler
Ich versuche, eine Funktion zu machen, die entweder eine ganzzahlige Ganzzahl oder eine zweistellige Ganzzahl erhält und sie als eine Zeichenfolge nach dem Konvertieren in ein zwei Ganzzahlformat (z. B. 7 bis 07) zurückgibt.
char *to_two_digits(int num) {
char num_str[4];
sprintf(num_str, "%d", num);
int length = sizeof(*num_str)/sizeof(char);
static char *return_string;
if (length == 1) {
sprintf_s(return_string, "0%d", num);
return return_string;
}
else if (length == 2) {
*return_string = *num_str;
return return_string;
}
else {
printf("Error! Number cannot be represented as a two-digit.");
exit(1);
}
}
Die Funktion schlägt fehl, wenn die sprintf_s() Funktion mit einem Fehler ausgeführt wird, das sagt:
------------------- -------- Microsoft Visual C++ - Laufzeitbibliothek -----------
Debug-Assertion fehlgeschlagen!
Datei: minkernel \ CRTs \ ucrt \ src \ appcrt \ stdio \ output.cpp
Line: 261
Expression: format = nullptr
Was das Problem ist, und wie kann ich es reparieren? Vielen Dank im Voraus.
Wo ist dein [MCVE], und wie können wir es sehen? Vielen Dank im Voraus. –