asprintf, vasprintf − Ausgabe in allokierte Zeichenkette
#define _GNU_SOURCE
#include <stdio.h>
int asprintf(char **strp, const char *fmt, ...);
int vasprintf(char **strp, const char *fmt, va_list ap);
Die Funktionen asprintf und vasprintf sind analog zu sprintf und vsprintf mit der Ausnahme, dass sie Speicherplatz für die Zeichenkette allokieren, der ausreichend groß ist, um die Ausgabe inklusive des abschließenden NUL-Zeichens aufzunehmen. Ein Zeiger darauf wird über den ersten Parameter zurückgegeben. Dieser Zeiger sollte an free(3) übergeben werden, um den belegten Speicherbereich wieder freizugeben, wenn er nicht mehr benötigt wird.
Wenn erfolgreich, geben diese Funktionen die Anzahl von ausgegebenen Bytes zurück, wie bei sprintf(3). Wenn die Speicherzuteilung nicht möglich war, oder andere Fehler auftreten, geben diese Funktionen -1 zurück und der Inhalt von strp ist undefiniert.
Diese Funktionen sind GNU Erweiterungen und nicht in C oder POSIX definiert. Sie sind ebenso verfügbar unter *BSD. Die Implementation unter FreeBSD setzt strp bei Fehler auf NULL.