Sie suchen nach dem sprintf
Familie von Funktionen. Ihr allgemeines Format ist:
char output[80];
sprintf(output, "No record with name %s found\n", inputString);
Allerdings, sprintf
selbst ist extrem gefährlich. Es ist anfällig für so genannte Pufferüberläufe. Das bedeutet, dass sprintf keine Ahnung hat, wie groß der output
Zeichenfolge, die Sie ihm zur Verfügung stellen, ist, so dass er bereitwillig mehr Daten in sie schreibt, als verfügbar sind. Dies wird zum Beispiel sauber kompiliert, überschreibt aber gültigen Speicher - und es gibt keine Möglichkeit, die sprintf
wissen, dass es etwas falsch macht:
char output[10];
sprintf(output, "%s", "This string is too long");
Die Lösung ist die Verwendung einer Funktion wie snprintf
die einen Längenparameter annimmt:
char output[10];
snprintf(output, sizeof output, "%s", "This string is too long, but will be truncated");
oder, wenn Sie mit einem Windows-System arbeiten, mit dem Befehl _sntprintf
Varianten und Freunde, die vor einem Überlaufen der Eingabe- oder Ausgabestrings schützen.