sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
Ler dados de uma seqüência de caracteres formatados.Essas são sistema autônomo versões de sscanf, _sscanf_l, swscanf, _swscanf_l com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no CRT.
int sscanf_s(
const char *buffer,
const char *format [,
argument ] ...
);
int _sscanf_s_l(
const char *buffer,
const char *format,
locale_t locale [,
argument ] ...
);
int swscanf_s(
const wchar_t *buffer,
const wchar_t *format [,
argument ] ...
);
int _swscanf_s_l(
const wchar_t *buffer,
const wchar_t *format,
locale_t locale [,
argument ] ...
);
Parâmetros
buffer
Dados armazenadosformat
Seqüência de caracteres de controle de formato.Para obter mais informações, consulte Especificações de formato.argument
Argumentos opcionaislocale
A localidade para usar
Valor de retorno
Cada uma dessas funções retornará o número de campos convertido com êxito e atribuídos; o valor retornado não inclui campos que foram lidos, mas não atribuídos.Um valor retornado 0 indica que nenhum campo foi atribuído.O valor retornado é EOF um erro ou se o participante da seqüência de caracteres for atingido antes da conversão primeira.
If buffer ou format é um NULL ponteiro, o manipulador de parâmetro inválido é chamado, conforme 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
Para obter informações sobre estes e outros códigos de erro, consulte _doserrno, errno, _sys_errlist e _sys_nerr.
Comentários
The sscanf_s função leia dados do buffer em localização fornecida por cada argument. Argumentos depois que a seqüência de caracteres de formato especificam ponteiros para variáveis com um tipo que corresponde a um especificador de tipo de format. Ao contrário de menos seguro versão sscanf, um parâmetro de dimensionar de buffer countOfBuffer é necessária ao usar os caracteres de campo de tipo c, C, s, S e [. Este parâmetro deve ser fornecido sistema autônomo um parâmetro adicional após cada buffer que exija o programa.Para obter mais informações, consulte scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l e scanf digitar caracteres de campo.
Observação: |
---|
O parâmetro dimensionar é do tipo unsigned, não size_t. |
The format argumento controles a interpretação da entrada campos e tem o mesmo formulário e funcione sistema autônomo o format argumento para o scanf_s função. Se copiar ocorre entre cadeias de caracteres que se sobrepõem, o comportamento é indefinido.
swscanf_s é uma versão de caractere largo da sscanf_s; os argumentos para swscanf_s são seqüências de caracteres largos. sscanf_s não manipula multibyte caracteres hexadecimais. swscanf_snão manipula hexadecimal de largura total Unicode ou caracteres de "zona de compatibilidade". Caso contrário, swscanf_s e sscanf_s tenham comportamento idêntico.
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.
Mapeamentos de rotina de texto genérica
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_stscanf_s |
sscanf_s |
sscanf_s |
swscanf_s |
_stscanf_s_l |
_sscanf_s_l |
_sscanf_s_l |
_swscanf_s_l |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
sscanf_s, _sscanf_s_l |
<stdio.h> |
swscanf_s, _swscanf_s_l |
<stdio.h> ou <wchar.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Exemplo
// crt_sscanf_s.c
// This program uses sscanf_s to read data items
// from a string named tokenstring, then displays them.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
// Input various data from tokenstring:
// max 80 character string plus NULL terminator
sscanf_s( tokenstring, "%s", s, _countof(s) );
sscanf_s( tokenstring, "%c", &c, sizeof(char) );
sscanf_s( tokenstring, "%d", &i );
sscanf_s( tokenstring, "%f", &fp );
// Output the data read
printf_s( "String = %s\n", s );
printf_s( "Character = %c\n", c );
printf_s( "Integer: = %d\n", i );
printf_s( "Real: = %f\n", fp );
}
String = 15 Character = 1 Integer: = 15 Real: = 15.000000
Equivalente do NET Framework
See Parse métodos, sistema autônomo sistema::Double::Parse.
Consulte também
Referência
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l