C vsprintf() function
C library function - vsprintf()
The vsprintf() function is used to format and store a series of characters and values in the buffer.
Syntax:
int vsprintf(char *target-string, const char *format, va_list arg_ptr);
Parameters:
Name | Description |
---|---|
target-string | Pointer to a buffer where the resulting string is stored. |
format | The format argument is a string containing C language conversion specifications. The conversion specification specifies the notation, alignment, significant digits, field width, and other aspects of the output format. To represent non-printing characters, such as newlines and tabs, the format string may contain escape characters. Below are the details. |
arg | A value identifying the variable arguments list. This should be initialized by the va_start macro defined in <stdarg>. |
Format strings specify notation, alignment, significant digits, field width, and other aspects of output formats. It can contain ordinary alphanumeric characters; along with escape characters, conversion specifiers, and other characters. Format specifications are made up of a the percent sign (%) followed by one of the following conversion operators, which determine what printf does with its arguments.
Conversion Specifiers:
Specifier | Description |
---|---|
%% | Print a single % character |
%c | Convert an int to an unsigned character and print the resulting character |
%d or %i | Print an int as a signed decimal number |
%u | Print an unsigned as an unsigned decimal number |
%o | Print an unsigned as an unsigned octal number |
%x | Hexadecimal notation (using lowercase letters a-f) |
%X | Hexadecimal notation (using uppercase letters A-F) |
%e | Exponential notation (using a lowercase e as in 3.1415e+00) |
%E | Exponential notation (using an uppercase E as in 3.1415E+00) |
%f | Print a double using a decimal format like [-]ddd.ddd |
%g | The more compact of %e or %f, insignificant zeros do not print. |
%G | Same as g, but using an uppercase E |
%s | Print the string pointed to by a char * |
%p | Print a void * argument in hexadecimal (ANSI C only) |
%n | Store the number of characters printed at this point in the integer pointed to by the int * argument. Nothing is printed. (ANSI C only). |
Conversion Flags:
You can control the alignment of the output using any of these optional flags.
Flag | Format | Example |
---|---|---|
+ (plus) | Always prints a sign character (+ or -). | %+7.2d |
- (minus) | Left-justifies the converted argument in its field. | %-7.2d |
0 (Zero) | Pad with zeros rather than spaces. | %07.2d |
# (hash) | Use an alternate form for the output. The effect differs depending on the conversion specifier.
|
Conversion width and precision:
By including these options in the format string, you can control the width and precision of the output:
Character | Description | Example |
---|---|---|
Field width | A digit string specifying the minimum number of digits to be printed. | %5f |
Precision | A digit string including a period (.) specifying the number of digits to be printed to the right of the decimal point. | %5.2f |
Some conversion operators may also be preceded by a size specification:
- h indicates that the argument associated with a d, i, o, u, x or X operator is a short or unsigned short.
- l indicates that the argument associated with a d, i, o, u, x or X operator is a long or unsigned long.
- L indicates that the argument associated with a e, E, f, g or G operator is a long double (ANSI C only)
Escape sequences in C:
An escape sequence is a series of characters that represents a special character. It begins with a backslash character (\), which indicates that the character(s) that follow the backslash character should be treated in a special way. C uses escape sequences within a format string to print certain special characters. For example \n moves the output position to the beginning of the next line. The following is a list of escape sequences.
Escape sequence | Action |
---|---|
\n | prints a new line |
\b | backs up one character |
\t | moves the output position to the next tab stop |
\\ | prints a backslash |
\" | prints a double quote |
\' | prints a single quote |
Return value
- Upon successful completion, the vsprintf() function returns the number of bytes written to target-string.
- If an error occurs, the vsprintf() function returns a negative value.
Example: vsprintf() function
The following example shows the usage of vprintf() function:
#include <stdio.h>
#include <stdarg.h>
void vout(char *string, char *fmt, ...);
char fmt1 [] = "%d %s %s %s %s\n";
void vout(char *string, char *fmt, ...)
{
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsprintf(string, fmt, arg_ptr);
va_end(arg_ptr);
}
int main(void)
{
char string[100];
vout(string, fmt1, 3, "colors -", "Red,", "Green,", "White.");
printf("String: %s\n", string);
}
Output:
String: 3 colors - Red, Green, White.
C Programming Code Editor:
Previous C Programming: C vfprintf()
Next C Programming: C fscanf()
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/c-programming/stdio/c_library_method_vsprintf.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics