Condividi tramite


sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Scrittura formattata i dati in una stringa.Più versioni sicure di alcune di queste funzioni sono disponibili, vedere sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.le versioni sicure di swprintf e _swprintf_l non creare un oggetto count parametro.

int sprintf(
   char *buffer,
   const char *format [,
   argument] ... 
);
int _sprintf_l(
   char *buffer,
   const char *format,
   locale_t locale [,
   argument] ... 
);
int swprintf(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format [,
   argument]...
);
int _swprintf_l(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
);
int __swprintf_l(
   wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
);
template <size_t size>
int sprintf(
   char (&buffer)[size],
   const char *format [,
   argument] ... 
); // C++ only
template <size_t size>
int _sprintf_l(
   char (&buffer)[size],
   const char *format,
   locale_t locale [,
   argument] ... 
); // C++ only
template <size_t size>
int swprintf(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format [,
   argument]...
); // C++ only
template <size_t size>
int _swprintf_l(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   locale_t locale [,
   argument] ... 
); // C++ only

Parametri

  • buffer
    Percorso di archiviazione per l'output

  • count
    Numero massimo di caratteri da archiviare nella versione Unicode della funzione.

  • format
    stringa del Formato-controllo

  • argument
    argomenti facoltativi

  • locale
    le impostazioni locali da utilizzare.

Per ulteriori informazioni, vedere Specifiche di formato.

Valore restituito

Il numero di caratteri scritto, oppure - 1 se si è verificato un errore.se buffer o format è un puntatore null, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni restituiscono -1 e impostate errno in EINVAL.

sprintf restituisce il numero di byte archiviati in buffer, non calcola il carattere di terminazione null.swprintfrestituisce il numero di caratteri di tipo " wide " archiviati in buffer, non calcola il carattere di tipo " wide " di terminazione null.

Note

sprintf la funzione formatta e contiene una stringa di caratteri e di valori in buffer.ciascuno argument (se presenti) viene convertito e restituito in base alla specifica di formato corrispondente in format.Il formato è costituita da caratteri normali e ha lo stesso form e di funzione format argomento per printf.Un carattere null viene aggiunto dopo l'ultimo carattere scritto.Se copiare si verifica tra stringhe che si sovrappongono, il comportamento sarà indefinito.

Nota sulla sicurezzaNota sulla sicurezza

Tramite sprintf, non è possibile limitare il numero di caratteri scritto, ovvero codice tramite sprintf è soggetto ai sovraccarichi del buffer.Utilizzare la funzione correlata _snprintf, che specifica il numero massimo di caratteri da scrivere buffer, o utilizzo _scprintf per determinare la quantità un buffer è obbligatorio.Inoltre, assicurarsi che format non è una stringa definita dall'utente.

swprintf è una versione a caratteri estesi di sprintf; gli argomenti del puntatore su swprintf sono le stringhe di caratteri estesi.Rilevamento degli errori di codifica in swprintf può essere diverso da quello di sprintf.swprintf e fwprintf comportano in modo identico con la differenza che swprintf scrivere l'output in una stringa anziché una destinazione di tipo FILEe swprintf richiede countparametro per specificare il numero massimo di caratteri da scrivere.le versioni di queste funzioni con _l il suffisso è identico con la differenza che utilizzano il parametro delle impostazioni locali passato alle impostazioni locali del thread corrente.

swprintf è conforme allo standard ISO C, che richiede il secondo parametro, count, di tipo size_t.Per definire il comportamento non standard precedente, definire _CRT_NON_CONFORMING_SWPRINTFS.In una versione futura, il comportamento precedente può essere rimosso, il codice deve essere modificato per utilizzare il nuovo comportamento conforme.

In C++, queste funzioni presentano overload del modello da richiamare le più recenti, controparti sicure di queste funzioni.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Mapping di routine a testo generico

routine di TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l

Requisiti

routine

Intestazione di associazione

sprintf, _sprintf_l

<stdio.h>

swprintf, _swprintf_l

<stdio.h> o <wchar.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

// crt_sprintf.c
// compile with: /W3
// This program uses sprintf to format various
// data and place them in the string named buffer.

#include <stdio.h>

int 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,     "   String:    %s\n", s ); // C4996
   j += sprintf( buffer + j, "   Character: %c\n", c ); // C4996
   j += sprintf( buffer + j, "   Integer:   %d\n", i ); // C4996
   j += sprintf( buffer + j, "   Real:      %f\n", fp );// C4996
   // Note: sprintf is deprecated; consider using sprintf_s instead

   printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}
  
// crt_swprintf.c
// wide character example
// also demonstrates swprintf returning error code
#include <stdio.h>

int main( void )
{
   wchar_t buf[100];
   int len = swprintf( buf, 100, L"%s", L"Hello world" );
   printf( "wrote %d characters\n", len );
   len = swprintf( buf, 100, L"%s", L"Hello\xffff world" );
   // swprintf fails because string contains WEOF (\xffff)
   printf( "wrote %d characters\n", len );
}
  

Equivalente .NET Framework

System:: stringa:: formato

Vedere anche

Riferimenti

Flusso I/O

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sscanf, _sscanf_l, swscanf, _swscanf_l

funzioni di vprintf