Compartilhar via


sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Gravar dados formatados em uma seqüência de caracteres.Versões mais seguras de algumas dessas funções estão disponível; consulte sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l. swprintf e _swprintf_l não tem uma versão mais segura porque eles levam um count parâmetro.

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

Parâmetros

  • buffer
    Local de armazenamento para saída

  • count
    Número máximo de caracteres para armazenar a versão Unicode dessa função.

  • format
    Seqüência de caracteres de controle de formato

  • argument
    Argumentos opcionais

  • locale
    A localidade para usar.

Para obter mais informações, consulte Especificações de formato.

Valor de retorno

O número de caracteres gravadas ou – 1 se ocorreu um erro.If buffer ou format é um ponteiro nulo, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções retornam -1 e conjunto errno para EINVAL.

sprintf Retorna o número de bytes armazenados em buffer, sem contar o caractere nulo de terminação. swprintf Retorna o número de caracteres largos armazenadas no buffer, sem contar o caractere de largo nulo terminação.

Comentários

The sprintf função formata e armazena uma seqüência de caracteres e valores em buffer. Cada argument (se houver) é convertido e saída de acordo com a especificação de formato correspondente em format. O formato consiste em caracteres comuns e tenha o mesmo formulário e funcione sistema autônomo a format argumento para printf.Um caractere nulo é acrescentado após o último caractere escrito.Se copiar ocorrer entre cadeias de caracteres que se sobrepõem, o comportamento é indefinido.

Observação de segurança:

Using sprintf, não é possível para limitar o número de caracteres gravada, o que significa que o código usando sprintf é suscetível a estouros de buffer. Considere a possibilidade de usar a função relacionadas _snprintf, que especifica um número máximo de caracteres a serem gravados no buffer, ou usar _scprintf para determinar o tamanho um buffer é necessário.Além disso, certifique-se de que format não é uma seqüência de caracteres definida pelo usuário.

swprintf é uma versão de caractere largo da sprintf; os argumentos de ponteiro swprintf são seqüências de caracteres largos. Detecção de erros em de codificaçãoswprintf pode ser diferente no sprintf. swprintf and fwprintf behave identically except that swprintf writes output to a string rather than to a destination of type FILE, and swprintf requires the countparameter to specify the maximum number of characters to be written.As versões dessas funções com o _l sufixo são idênticas exceto que usarem o parâmetro de localidade passado em vez da localidade do thread corrente.

In Visual C++ 2005, swprintf está de acordo com o ISO C padrão, que requer o segundo parâmetro, count, do tipo size_t. Para forçar o comportamento antigo não padrão, definir _CRT_NON_CONFORMING_SWPRINTFS. Em uma versão futura, o comportamento antigo pode ser removido, para que o código deve ser alterado para usar o novo comportamento conformes.

No C++, essas funções têm sobrecargas de modelo que invocam as suas similares do mais recentes, seguras dessas funções.Para obter mais informações, consulte Proteger overloads de modelo.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_stprintf

sprintf

sprintf

swprintf

_stprintf_l

_sprintf_l

_sprintf_l

__swprintf_l

Requisitos

Rotina

Cabeçalho necessário

sprintf, _sprintf_l

<stdio.h>

swprintf, _swprintf_l

<stdio.h> ou <wchar.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Exemplo

// 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 );
}

Output:    String:    computer    Character: l    Integer:   35    Real:      1.732053  character count = 79

// 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 );
}

wrote 11 characters wrote -1 characters

Equivalente do NET Framework

sistema::String::Format

Consulte também

Referência

Fluxo de E/S

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

scanf, _scanf_l, wscanf, _wscanf_l

sscanf, _sscanf_l, swscanf, _swscanf_l

Funções vprintf