Node:Formatted Output Functions, Next:Dynamic Output, Previous:Other Output Conversions, Up:Formatted Output
This section describes how to call printf
and related functions.
Prototypes for these functions are in the header file stdio.h
.
Because these functions take a variable number of arguments, you
must declare prototypes for them before using them. Of course,
the easiest way to make sure you have all the right prototypes is to
just include stdio.h
.
int printf (const char *template, ...) | Function |
The printf function prints the optional arguments under the
control of the template string template to the stream
stdout . It returns the number of characters printed, or a
negative value if there was an output error.
|
int wprintf (const wchar_t *template, ...) | Function |
The wprintf function prints the optional arguments under the
control of the wide template string template to the stream
stdout . It returns the number of wide characters printed, or a
negative value if there was an output error.
|
int fprintf (FILE *stream, const char *template, ...) | Function |
This function is just like printf , except that the output is
written to the stream stream instead of stdout .
|
int fwprintf (FILE *stream, const wchar_t *template, ...) | Function |
This function is just like wprintf , except that the output is
written to the stream stream instead of stdout .
|
int sprintf (char *s, const char *template, ...) | Function |
This is like printf , except that the output is stored in the character
array s instead of written to a stream. A null character is written
to mark the end of the string.
The The behavior of this function is undefined if copying takes place
between objects that overlap--for example, if s is also given
as an argument to be printed under control of the Warning: The To avoid this problem, you can use |
int swprintf (wchar_t *s, size_t size, const wchar_t *template, ...) | Function |
This is like wprintf , except that the output is stored in the
wide character array ws instead of written to a stream. A null
wide character is written to mark the end of the string. The size
argument specifies the maximum number of characters to produce. The
trailing null character is counted towards this limit, so you should
allocate at least size wide characters for the string ws.
The return value is the number of characters generated for the given
input, excluding the trailing null. If not all output fits into the
provided buffer a negative value is returned. You should try again with
a bigger output string. Note: this is different from how
Note that the corresponding narrow stream function takes fewer
parameters. |
int snprintf (char *s, size_t size, const char *template, ...) | Function |
The snprintf function is similar to sprintf , except that
the size argument specifies the maximum number of characters to
produce. The trailing null character is counted towards this limit, so
you should allocate at least size characters for the string s.
The return value is the number of characters which would be generated
for the given input, excluding the trailing null. If this value is
greater or equal to size, not all characters from the result have
been stored in s. You should try again with a bigger output
string. Here is an example of doing this:
/* Construct a message describing the value of a variable whose name is name and whose value is value. */ char * make_message (char *name, char *value) { /* Guess we need no more than 100 chars of space. */ int size = 100; char *buffer = (char *) xmalloc (size); int nchars; if (buffer == NULL) return NULL; /* Try to print in the allocated space. */ nchars = snprintf (buffer, size, "value of %s is %s", name, value); if (nchars >= size) { /* Reallocate buffer now that we know how much space is needed. */ buffer = (char *) xrealloc (buffer, nchars + 1); if (buffer != NULL) /* Try again. */ snprintf (buffer, size, "value of %s is %s", name, value); } /* The last call worked, return the string. */ return buffer; } In practice, it is often easier just to use Attention: In versions of the GNU C library prior to 2.1 the
return value is the number of characters stored, not including the
terminating null; unless there was not enough space in s to
store the result in which case |