What is vsnprintf() in C?

vsnprintf() prints a formatted list of arguments to a character array. The declaration for vsnprintf() is shown below:

int vsnprintf(char *arr, size_t len, const wchar_t *format, va_list args);

Parameters

  • arr: Pointer to the character array where output is to be printed
  • len: Maximum number of characters that can be written to the array
  • format: Format in which the output will be printed
  • args: Pointer to the list of arguments to be printed

Return value

If the write operation to the output stream is successful, vsnprintf() returns the number of characters written. A negative value is returned if there is an error when writing to the output stream.

Note: The return value of vsnprintf() does not count terminating null characters.

Example

Consider the code snippet below, which demonstrates the use of vsnprintf():

#include <stdio.h>
#include <stdarg.h>
int writeformatted(char* buffer, int bufferSize, const char *format, ...)
{
int len = 0;
va_list arguments;
va_start(arguments, format);
len = vsnprintf(buffer, bufferSize, format, arguments);
va_end(arguments);
return len;
}
int main ()
{
char buf[50];
char s1[50] = "vsnprintf() Example Code";
int len = writeformatted(buf, 50, "%s ", s1);
printf("Content of array: %s \n", buf);
printf("No. of characters in array: %d \n", len);
return 0;
}

Explanation

The writeformatted() function is used in line 20, which uses vsnprintf() in line 9 to print the arguments that are created in lines 16-18 in buf.

Copyright ©2024 Educative, Inc. All rights reserved