====== sprintf() ====== ''sprintf()'' ist in der ''[[c:lib:stdio:start|stdio]]'' definiert, die in C über ''stdio.h'', bzw in C++ über ''cstdio'' eingebunden wird. ===== Funktion ===== ''sprintf()'' wird dazu verwendet, um einen String aus einem [[c:lib:stdio:formatstring|Formatstring]] zu erzeugen. Die Platzhalter im Formatstring werden durch die angegebenen Werte ersetzt und der resultierende String wird in den als ersten Parameter übergebenen Buffer kopiert. ===== Signatur ===== #include 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. ===== Fehlerquellen ===== 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. ===== Beispiel ===== #include #include 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! ===== siehe auch ===== [[c:lib:stdio:start|stdio]]: [[c:lib:stdio:printf()]], [[c:lib:stdio:fprintf()]], [[c:lib:stdio:sscanf()]]