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'outputcount
Numero massimo di caratteri da archiviare nella versione Unicode della funzione.format
stringa del Formato-controlloargument
argomenti facoltativilocale
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 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
Vedere anche
Riferimenti
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l