Partilhar via


sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

Grave dados formatados em uma seqüência de caracteres.Versões mais seguras do que algumas dessas funções estão disponíveis; see sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l.As versões seguras swprintf e _swprintf_l não terão 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 na 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 gravados ou – 1 se ocorreu um erro.Se buffer ou format é um ponteiro nulo, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, essas funções retornam -1 e defina errno para EINVAL.

sprintfRetorna o número de bytes armazenados em buffer, sem contar o caractere nulo de terminação.swprintfRetorna o número de caracteres de largura armazenados em buffer, sem contar o caractere de amplo terminação nulo.

Comentários

O sprintf função formata e armazena uma seqüência de caracteres e valores em buffer.Cada argument (se houver) são convertidos 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 funcionar como o 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çaObservação de segurança

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

swprintfé uma versão de caractere largo de sprintf; os argumentos de ponteiro para swprintf são seqüências de caracteres largos.Detecção de erros de codificação swprintf pode ser diferente no sprintf.swprintfe fwprintf se comportam de forma idêntica, exceto que swprintf grava a saída para uma seqüência de caracteres em vez de um destino do tipo FILE, e swprintf requer o countparâmetro para especificar o número máximo de caracteres a serem gravados.As versões dessas funções com o _l sufixo são idênticas exceto que eles usam o parâmetro de localidade passado em vez da localidade do thread atual.

swprintfestá de acordo com o ISO C padrão, que requer o segundo parâmetro, count, do tipo size_t.Para forçar o antigo comportamento diferente do padrão, definir _CRT_NON_CONFORMING_SWPRINTFS.Em uma versão futura, o comportamento antigo pode ser removido, portanto, 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érico

TCHAR.Rotina H

_ Unicode & _ MBCS do arquivo não definido

_ MBCS do arquivo 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 de 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 );
}
  
// 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 );
}
  

Equivalência do .NET Framework

System::String::Format

Consulte também

Referência

Fluxo de 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

Funções vprintf