Partilhar via


_snscanf, _snscanf_l, _snwscanf, _snwscanf_l

Lê dados formatados de um comprimento especificado de uma cadeia de caracteres. Versões mais seguras dessas funções estão disponíveis; confira _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l.

Sintaxe

int __cdecl _snscanf(
   const char * input,
   size_t length,
   const char * format,
   ...
);
int __cdecl _snscanf_l(
   const char * input,
   size_t length,
   const char * format,
   _locale_t locale,
   ...
);
int __cdecl _snwscanf(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   ...
);
int __cdecl _snwscanf_l(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   _locale_t locale,
   ...
);

Parâmetros

input
A cadeia de caracteres de entrada para examinar.

length
O número de caracteres a examinar em input.

format
Um ou mais especificadores de formato.

...
Variáveis opcionais que serão usadas para armazenar os valores extraídos da cadeia de caracteres de entrada pelos especificadores de formato no format.

locale
A localidade a ser usada.

Valor retornado

Ambas as funções retornam o número de campos convertidos e atribuídos com êxito; O valor retornado não inclui campos que foram lidos, mas não atribuídos. Um valor retornado igual a 0 indica que nenhum campo foi atribuído. O valor retornado será EOF para um erro ou se o fim da cadeia de caracteres for alcançado antes da primeira conversão. Para obter mais informações, consulte sscanf.

Se input or format for um NULL ponteiro, ou se length for menor ou igual a zero, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções retornarão EOF e definirão errno para EINVAL.

Para obter informações sobre esses e outros códigos de erro, confira errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

Essa função é como sscanf, exceto que permite especificar um número fixo de caracteres a serem examinados da cadeia de caracteres de entrada. Para obter mais informações, consulte sscanf.

As versões dessas funções com o sufixo _l são idênticas, com a exceção de usarem o parâmetro de localidade passado, em vez da localidade do thread atual.

Mapeamentos de rotina de texto genérico

Rotina Tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_sntscanf _snscanf _snscanf _snwscanf
_sntscanf_l _snscanf_l _snscanf_l _snwscanf_l

Requisitos

Rotina Cabeçalho necessário
_snscanf, _snscanf_l <stdio.h>
_snwscanf, _snwscanf_l <stdio.h> ou <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// crt_snscanf.c
// compile with: /W3

#include <stdio.h>
int main( )
{
   char  str1[] = "15 12 14...";
   wchar_t  str2[] = L"15 12 14...";
   char  s1[3];
   wchar_t  s2[3];
   int   i;
   float fp;

   i = _snscanf( str1, 6,  "%s %f", s1, &fp); // C4996
   // Note: _snscanf is deprecated; consider using _snscanf_s instead
   printf("_snscanf converted %d fields: ", i);
   printf("%s and %f\n", s1, fp);

   i = _snwscanf( str2, 6,  L"%s %f", s2, &fp); // C4996
   // Note: _snwscanf is deprecated; consider using _snwscanf_s instead
   wprintf(L"_snwscanf converted %d fields: ", i);
   wprintf(L"%s and %f\n", s2, fp);
}
_snscanf converted 2 fields: 15 and 12.000000
_snwscanf converted 2 fields: 15 and 12.000000

Confira também

Especificação de largura scanf