sprintf()

sprintf() ist in der 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. 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 <stdio.h>
int sprintf( char * buffer, char const * formatString, ... );

buffer: Zeiger auf einen Speicherbereich, in dem der String zusammenkopiert wird
formatString: Platzhalter für String-Funktionen, 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 <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!

siehe auch