_snprintf, _snwprintf

De RAD Studio
Aller à : navigation, rechercher

Remonter à Stdio.h - Index


Header File

stdio.h

Category

Memory and String Manipulation Routines

Syntax

int _snprintf(char* buffer, size_t nsize, const char* format, ...);

int _snwprintf(wchar_t* buffer, size_t nsize, const wchar_t* format, ...);

Description

Sends formatted output to a string of a maximum length specified by nsize. _snprintf and _snwprintf are Microsoft compatible with the _snprintf and _snprintfw functions, respectively.

If the number of bytes to output is:

  • < nsize, then all of the characters have been written, including the terminating '\0' character.
  • == nsize, then nsize characters are written with no terminating '\0' character.

If nsize is 0, then the string will not be written to (and may be NULL).

If nsize is too small, then the return value is -1, and only nsize characters are written, with no terminating '\0' character.

Return Value

Number of bytes output or -1 if nsize is too small.


Example

#include <stdio.h>
#include <stdlib.h>

int main()
{
	//creating a buffer from multiple formats
	char buff[100];
	char str[]="hello world!";
	char c='!';
	int i=123;
	double d=23.3432;
	int bf_len=sizeof(buff)/sizeof(buff[0])-1;
	int buff_left, buff_used;
	buff_used=0;
	buff_left=bf_len-buff_used;
	int buff_written;
 buff_written = _snprintf(&buff[buff_used], buff_left, "%s\n", str );
  //update the buffer
   if (buff_written >= 0)
   {
	buff_used += buff_written;
	buff_left -= buff_written;
	}
  if (buff_left>0) {
   buff_written = _snprintf(&buff[buff_used], buff_left, "%c\n", c );
  //update the buffer
   if (buff_written >= 0)
   {
	buff_used += buff_written;
	buff_left -= buff_written;
	}
  }
   if (buff_left>0) {
   buff_written = _snprintf(&buff[buff_used], buff_left, "%d\n", i );
  //update the buffer
   if (buff_written >= 0)
   {
	buff_used += buff_written;
	buff_left -= buff_written;
	}
  }
	if (buff_left>0) {
   buff_written = _snprintf(&buff[buff_used], buff_left, "%f\n", d );
  //update the buffer
   if (buff_written >= 0)
   {
	buff_used += buff_written;
	buff_left -= buff_written;
	}
  }
  printf("The buffer:\n%s\n", buff );
  printf("The buffer has %d bytes", buff_used);
	return 0;
}

Voir aussi