C sprintf() function
C library function - sprintf()
The sprintf() function is used to print formatted data to buffer. Any argument-list is converted and put out according to the corresponding format specification in the format-string.
Syntax:
int sprintf(char *buffer, const char *format-string, argument-list)
Parameters:
Name | Description |
---|---|
str | 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. |
additional argument-list | Depending on the format string, the function may require additional arguments. |
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
- If successful, returns the number of bytes that are written in the array, not counting the ending null character.
Example: sprintf() function
Following example uses sprintf() to format and print various data.
#include <stdio.h>
char buffer[200];
int x, j = 0;
double f;
char *str = "w3resource";
char ch;
int main(void)
{
ch = 'P';
x = 7;
f = 12.4567;
/* Format and print various data */
j = sprintf(buffer, "%s\n", str);
j += sprintf(buffer+j, "%c\n", ch);
j += sprintf(buffer+j, "%d\n", x);
j += sprintf(buffer+j, "%f\n", f);
printf("%s", buffer);
}
Output:
w3resource P 7 12.456700
C Programming Code Editor:
Previous C Programming: C fprintf()
Next C Programming: C vfprintf()
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_sprintf.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics