[ CCode ( cname = "g_strdup_vprintf" ) ]
public string vprintf (va_list args)

Similar to the standard C vsprintf function but safer, since it calculates the maximum space required and allocates memory to hold the result.

The returned string should be freed with g_free when no longer needed.

The returned string is guaranteed to be non-NULL, unless format contains `lc` or ` ls` conversions, which can fail if no multibyte representation is available for the given character.

See also g_vasprintf, which offers the same functionality, but additionally returns the length of the allocated string.

Example: Format a string with printf:

public static void my_printf (string format, ...) {
va_list va_list = va_list ();
string res = format.vprintf (va_list);
print (res);

public static int main (string[] args) {
// Output: ``Shut up, K-9!``
my_printf ("Shut %s, %c-%d!\n", "up", 'K', 9);
return 0;

valac --pkg glib-2.0 string.vprintf.vala



the list of parameters to insert into the format string


a standard printf format string, but notice string precision pitfalls


a newly-allocated string holding the result