sprintf, swprintf

Write formatted data to a string.

**intsprintf(char*buffer,constchar*format [,**argument] ... );

**intswprintf(wchar_t*buffer,constwchar_t*format [,**argument] ... );

Routine Required Header Compatibility
sprintf <stdio.h> ANSI, Win 95, Win NT
swprintf <stdio.h> or <wchar.h> ANSI, Win 95, Win NT

For additional compatibility information, see Compatibility in the Introduction.


LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

sprintf returns the number of bytes stored in buffer, not counting the terminating null character. swprintf returns the number of wide characters stored in buffer, not counting the terminating null wide character.



Storage location for output


Format-control string


Optional arguments

For more information, see Format Specifications.


The sprintf function formats and stores a series of characters and values in buffer. Each argument (if any) is converted and output according to the corresponding format specification in format. The format consists of ordinary characters and has the same form and function as the format argument for printf. A null character is appended after the last character written. If copying occurs between strings that overlap, the behavior is undefined.

swprintf is a wide-character version of sprintf; the pointer arguments to swprintf are wide-character strings. Detection of encoding errors in swprintf may differ from that in sprintf. swprintf and fwprintf behave identically except that swprintf writes output to a string rather than to a destination of type FILE.

Generic-Text Routine Mappings

TCHAR.H Routine _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined
_stprintf sprintf sprintf swprintf


/* SPRINTF.C: This program uses sprintf to format various
 * data and place them in the string named buffer.

#include <stdio.h>

void main( void )
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;

   /* Format and print various data: */
   j  = sprintf( buffer,     "\tString:    %s\n", s );
   j += sprintf( buffer + j, "\tCharacter: %c\n", c );
   j += sprintf( buffer + j, "\tInteger:   %d\n", i );
   j += sprintf( buffer + j, "\tReal:      %f\n", fp );

   printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );


   String:    computer
   Character: l
   Integer:   35
   Real:      1.732053

character count = 71

Stream I/O Routines

See Also   _snprintf, fprintf, printf, scanf, sscanf, vprintf Functions