Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

sprintf - Formatierte Ausgabe in eine Zeichenkette

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

int sprintf(char *s, const char *format, argumentenliste);

sprintf bereitet Daten (Zeichen, Zeichenketten, numerische Werte) gemäß den Angaben in der Zeichenkette format auf und schreibt sie in den Bereich, auf den s zeigt.

sprintf arbeitet wie printf, außer dass die aufbereiteten Daten in eine Zeichenkette und nicht auf die Standardausgabe geschrieben werden.

Parameter

char *s

Zeiger auf die Ergebniszeichenkette. sprintf schließt die Zeichenkette mit dem Nullbyte (\0) ab.

const char *format

Formatzeichenkette wie bei printf mit KR- oder ANSI-Funktionalität (Beschreibung siehe dort).

Es gibt nur bzgl. der Steuerzeichen für Zwischenraum (\n, \t, etc.) folgenden Unterschied: sprintf trägt in die Ergebniszeichenkette den EBCDIC-Wert des Steuerzeichens ein. Erst bei der Ausgabe in Textdateien werden die Steuerzeichen je nach Art der Textdatei in ihre entsprechende Wirkung umgesetzt (siehe Abschnitt „Zwischenraum“ (Grundbegriffe)).

argumentenliste

Variablen oder Konstanten, deren Werte gemäß den Angaben in den Formatanweisungen für die Ausgabe umgewandelt und formatiert werden sollen.
Wenn die Anzahl der Formatanweisungen nicht mit der Anzahl der Argumente übereinstimmt, gilt Folgendes:
Gibt es mehr Argumente, werden die überzähligen ignoriert.
Gibt es weniger Argumente, führt dies zu undefinierten Ergebnissen.

Returnwert   Anzahl der in s gespeicherten Zeichen.

Das durch sprintf generierte abschließende Nullbyte (\0) wird dabei nicht mitgezählt.

Hinweise

Sie müssen dafür sorgen, dass der Bereich, auf den s zeigt, groß genug für das Ergebnis ist!

Bei der Umwandlung von Gleitkommazahlen rundet sprintf auf die angegebene Genauigkeit.

sprintf nimmt keine Konvertierung von einem Datentyp in einen anderen vor. Soll ein Wert nicht entsprechend seinem Typ ausgegeben werden, muss er explizit konvertiert werden (z.B. mit dem cast-Operator).

Maximale Anzahl der auszugebenden Zeichen
Bei KR-Funktionalität (nur bei C/C++ Versionen kleiner V3.0 vorhanden) können pro sprintf-Aufruf maximal 1400 Zeichen ausgegeben werden, bei ANSI-Funktionalität maximal 1400 Zeichen pro Konversionselement (z.B. %s).

Bei sich überlappenden Speicherbereichen ist das Verhalten undefiniert.

Versuche, nicht initialisierte Variablen oder Variablen nicht entsprechend ihrem Datentyp auszugeben, können zu undefinierten Ergebnissen führen.

Das Verhalten ist undefiniert, wenn in einer Formatanweisung dem Prozentzeichen (%) ein nicht definiertes Formatierungs- bzw. Umwandlungszeichen folgt.

Beispiel

Sie können sprintf z.B. dazu benutzen, eine Zeichenkette zu kopieren. Damit kann man die Funktion strncpy implementieren. Das Beispiel bei strncpy würde dann wie folgt aussehen:

#include <stdio.h>
int main(void)
{
   int n;
   char *s2 = "Peter geht schwimmen !";
   char s1[BUFSIZ];
   printf("Der Satz lautet : %s \nWieviel Zeichen kopieren ?\n", s2);
   scanf("%d",&n);
               /* Alternativ könnte an dieser Stelle
                  folgender Aufruf stehen:
                  strncpy(s1,s2,n);        */
  sprintf(s1,"%.*s",n,s2);
  printf("%s \n",s1);
  return 0;
}

Siehe auch  printf, fprintf, snprintf, putc, putchar, puts, sscanf