vsprintf Function

Prints formatted text to a string using a variable length argument list.

Include

<stdio.h>

<stdarg.h>

Prototype

int vsprintf(char *s, const char *format, va_list ap);

Arguments

s storage string for output
format format control string
ap pointer to a list of arguments

Return Value

Returns number of characters stored in s excluding the terminating null character.

Remarks

The format argument has the same syntax and use that it has in printf.

To access the variable length argument list, the ap variable must be initialized by the macro va_start and may be reinitialized by additional calls to va_arg. This must be done before the vsprintf function is called. Invoke va_end after the function returns. For more details, see stdarg.h.

This function requires a heap.

Example

#include <stdio.h>   /* for vsprintf, printf */
#include <stdarg.h>  /* for va_start,        */
                     /* va_list, va_end      */
void errmsg(const char *fmt, ...)
{
  va_list ap;
  char buf[100];

  va_start(ap, fmt);
  vsprintf(buf, fmt, ap);
  va_end(ap);
  printf("Error: %s", buf);
}
int main(void)
{
  int num = 3;

  errmsg("The letter '%c' is not %s\n", 'a', 
         "an integer value.");
  errmsg("Requires %d%s\n", num, 
         " or more characters.\n");
}

Example Output

Error: The letter 'a' is not an integer value.
Error: Requires 3 or more characters.