====== 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 [[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.
===== 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()]]