sprintf()
ist in der stdio
definiert, die in C über stdio.h
, bzw in C++ über cstdio
eingebunden wird.
sprintf()
wird dazu verwendet, um einen String aus einem FormatString zu erzeugen. Hierfür wird in den Buffer, der als erstes Argument erzeugt wird der Formatstring kopiert und die Substitutionszeichen mit dem gegebenen Parametern ersetzt.
#include <stdio.h> int sprintf( char * buffer, char const * formatString, ... );
buffer: Zeiger auf einen Speicherbereich, in dem der String zusammenkopiert wird
formatString: Formatstring, der beschreibt, wie der String zusammengesetzt wird
…: Eine Anzahl von Argumenten, entsprechend des Formatstrings
Return Value: Die Länge des Strings im Erfolgsfall (das angehängte Nullbyte wird nicht mitgezählt) oder eine negative Zahl im Fehlerfall.
Der Buffer muss mindestens so groß sein, dass der zu konstruierende String in jedem Fall hineinpasst. Das bedeutet, dass für jedes „%d“ eine Zahl zwischen -2000000000 und +2000000000 liegt. Der Wert „-2000000000“ ist 11 Zeichen groß. Also muss pro „%d“ 11 Bytes Buffer vorhanden sein und auch das Nullbyte am Schluss darf nicht vergessen werden!
Ist der Buffer zu klein, ist das Programm fehlerhaft. Wenn in 99% der Fälle das Programm funktioniert, wird vielleicht in einem 1% der Fälle eine Zahl gedruckt, die zu groß ist und dann nicht in den Buffer passt. Ein String (%s) darf nicht so lang sein, dass er die maximale Buffergröße überschreibt. Werden mehrere Parameter in einen String eingebaut, so muss das auch in Kombination passen.
#include <stdio.h> #include <stdlib.h> int main (void) { char string[] = "Hallo"; char c = '!'; int n; char buffer[512]; n = sprintf( buffer, "%s Welt%c", string, c ); printf( "%s\n", buffer ); return EXIT_SUCCESS; }
Ausgabe :
Hallo Welt!