+and
+.I vprintf
+write the standard output stream
+.BR stdout ;
+.I fprintf
+and
+.I vfprintf
+write the named output
+.IR stream ;
+.IR sprintf ,
+.IR snprintf ,
+.IR vsprintf ,
+and
+.I vsnprintf
+write to the character string
+.IR str .
+.\" .IR str ;
+.\" and
+.\" .I smprintf
+.\" and
+.\" .I vsmprintf
+.\" dynamically allocate a new string with
+.\" .IR malloc .
+Each function converts, formats, and prints the arguments following the
+.I format
+(or accessed via the variable-length argument facilities of
+.IR varargs (3))
+under control of the
+.I format
+argument.
+.\" Except for
+.\" .I smprintf
+.\" and
+.\" .IR vsmprintf ,
+.\" all of these functions return
+Each function returns
+the number of characters printed
+(not including the trailing `\e0' used to end output to strings).
+.\" .I Smprintf
+.\" and
+.\" .I vsmprintf
+.\" return a pointer to a string of an appropriate length;
+.\" this pointer should be passed to
+.\" .I free
+.\" to release the associated storage
+.\" when it is no longer needed.
+.\" If sufficient space is not avaliable,
+.\" .I smprintf
+.\" and
+.\" .I vsmprintf
+.\" will return
+.\" .SM
+.\" .BR NULL .
+.I Snprintf
+and
+.I vsnprintf
+will write at most
+.IR size \-1
+of the characters printed into the output string
+(the
+.IR size 'th
+character then gets the terminating `\e0');
+if the return value is greater than or equal to the
+.I size
+argument, the string was too short
+and some of the printed characters were discarded.