c / intermediate
Snippet
Sichere String-Formatierung mit snprintf
Die Funktion snprintf ist eine sicherere Alternative zu sprintf, da sie eine maximale Puffergröße erfordert. Dies verhindert Pufferüberläufe, indem sichergestellt wird, dass nicht mehr als 'n' Zeichen geschrieben werden, einschließlich des Nullterminators. Wenn die Ausgabe abgeschnitten wird, gibt der Rückgabewert die Gesamtzahl der Zeichen an, die eigentlich geschrieben worden wären.
snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>int main() {char buffer[16];int value = 123456;// Prevents buffer overflow by specifying the sizeint written = snprintf(buffer, sizeof(buffer), "Val: %d", value);if (written >= (int)sizeof(buffer)) {printf("Output truncated! Need %d bytes.\n", written + 1);}printf("Result: %s\n", buffer);return 0;}
Erklärung
1
char buffer[16];
Reserviert ein kleines Zeichen-Array mit fester Größe.
2
snprintf(buffer, sizeof(buffer), "Val: %d", value);
Schreibt den formatierten String unter Einhaltung des Pufferlimits.
3
if (written >= (int)sizeof(buffer))
Prüft, ob der Rückgabewert größer oder gleich der Größe ist, was auf eine Kürzung hindeutet.