_snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l
Leituras formatado dados de um período especificado de uma string.Estas são as versões do _snscanf, _snscanf_l, _snwscanf, _snwscanf_l com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.
int __cdecl _snscanf_s(
const char * input,
size_t length,
const char * format,
...
);
int __cdecl _snscanf_s_l(
const char * input,
size_t length,
const char * format,
locale_t locale,
...
);
int __cdecl _snwscanf_s(
const wchar_t * input,
size_t length,
const wchar_t * format,
...
);
int __cdecl _snwscanf_s_l(
const wchar_t * input,
size_t length,
const wchar_t * format,
locale_t locale,
…
);
Parâmetros
input
Seqüência de entrada para examinar.length
Número de caracteres para examinar em input.format
Especificadores de formato de um ou mais.... (optional)
Variáveis que serão usadas para armazenar os valores extraídos da seqüência de entrada por especificadores de formato em format.locale
A localidade para usar.
Valor de retorno
Ambas as funções retorna o número de campos atribuídos; e convertido com êxito o valor de retorno não inclui campos que foram lidos, mas não atribuídos.Um valor de retorno 0 indica que não há campos foram atribuídos.O valor de retorno é EOF um erro, ou se o final da seqüência de caracteres é alcançado antes da conversão primeira.Para obter mais informações, consulte sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.
Se input ou format é um NULL o ponteiro, 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 EOF e defina errno para EINVAL.
Para obter informações sobre esses e outros códigos de erro, consulte _doserrno, errno, _sys_errlist e _sys_nerr.
Comentários
Esta função é como sscanf_s , exceto que ele fornece a capacidade de especificar um número fixo de caracteres para examinar a partir da seqüência de entrada.Para obter mais informações, consulte sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.
O parâmetro de tamanho de buffer é necessário com os caracteres de campo do tipo c, C, s, S, e [.Para obter mais informações, consulte scanf caracteres de campo de tipo.
Observação |
---|
O parâmetro size é do tipo unsigned, e não size_t. |
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.
Mapeamentos de rotina de texto genérico
Rotina de TCHAR.h |
_ Unicode e _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_sntscanf_s |
_snscanf_s |
_snscanf_s |
_snwscanf_s |
_sntscanf_s_l |
_snscanf_s_l |
_snscanf_s_l |
_snwscanf_s_l |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_snscanf_s, _snscanf_s_l |
<stdio.h> |
_snwscanf_s, _snwscanf_s_l |
<stdio.h> ou <wchar.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
Exemplo
// crt_snscanf_s.c
// This example scans a string of
// numbers, using both the character
// and wide character secure versions
// of the snscanf function.
#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_s( str1, 6, "%s %f", s1, 3, &fp);
printf_s("_snscanf_s converted %d fields: ", i);
printf_s("%s and %f\n", s1, fp);
i = _snwscanf_s( str2, 6, L"%s %f", s2, 3, &fp);
wprintf_s(L"_snwscanf_s converted %d fields: ", i);
wprintf_s(L"%s and %f\n", s2, fp);
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.