_cscanf_s
, _cscanf_s_l
, _cwscanf_s
_cwscanf_s_l
Legge i dati formattati dalla console. Queste versioni più sicure di _cscanf
, _cscanf_l
, _cwscanf
, _cwscanf_l
includono miglioramenti alla sicurezza, come descritto in Funzionalità di sicurezza in CRT.
Importante
Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
int _cscanf_s(
const char *format [,
argument] ...
);
int _cscanf_s_l(
const char *format,
_locale_t locale [,
argument] ...
);
int _cwscanf_s(
const wchar_t *format [,
argument] ...
);
int _cwscanf_s_l(
const wchar_t *format,
_locale_t locale [,
argument] ...
);
Parametri
format
Stringa di controllo del formato.
argument
Parametri facoltativi.
locale
Impostazioni locali da usare.
Valore restituito
Numero di campi che sono stati convertiti ed assegnati correttamente. Il valore restituito non include i campi letti ma non assegnati. Il valore restituito è EOF
per un tentativo di lettura alla fine del file. Un EOF
oggetto può essere restituito anche quando l'input della tastiera viene reindirizzato a livello di riga di comando del sistema operativo. Un valore restituito pari a zero indica che non sono stati assegnati campi.
Queste funzioni convalidano i relativi parametri. Se format
è un puntatore Null, queste funzioni richiamano il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EOF
e errno
vengono impostate su EINVAL
.
Osservazioni:
La funzione _cscanf_s
legge i dati direttamente dalla console nei percorsi specificati da argument
. La _getche
funzione viene usata per leggere i caratteri. Ogni parametro facoltativo deve essere un puntatore a una variabile con un tipo corrispondente a un identificatore di tipo in format
. Il formato controlla l'interpretazione dei campi di input e ha la stessa forma e funzione del format
parametro per la scanf_s
funzione. Anche se _cscanf_s
normalmente restituisce il carattere di input, non lo fa se l'ultima chiamata era a _ungetch
.
Analogamente ad altre versioni sicure delle funzioni nella scanf
famiglia _cscanf_s
e _cwscanf_s
richiedono argomenti di dimensione per i caratteri di campo di tipo c, C, s, S e [. Per altre informazioni, vedere Specifica della larghezza per scanf.
Nota
Il parametro di dimensione è di tipo unsigned
non size_t
.
Le versioni di queste funzioni con il suffisso _l
sono identiche ad eccezione per il fatto che utilizzano il parametro delle impostazioni locali passato al posto di quelle del thread corrente.
Mapping di routine di testo generico
Routine TCHAR.H | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcscanf_s |
_cscanf_s |
_cscanf_s |
_cwscanf_s |
_tcscanf_s_l |
_cscanf_s_l |
_cscanf_s_l |
_cwscanf_s_l |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_cscanf_s , _cscanf_s_l |
<conio.h> |
_cwscanf_s , _cwscanf_s_l |
<conio.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie
Tutte le versioni delle librerie di runtime C.
Esempio
// crt_cscanf_s.c
// compile with: /c
/* This program prompts for a string
* and uses _cscanf_s to read in the response.
* Then _cscanf_s returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, n[3];
int i;
result = _cscanf_s( "%i %i %i", &n[0], &n[1], &n[2] );
_cprintf_s( "\r\nYou entered " );
for( i=0; i<result; i++ )
_cprintf_s( "%i ", n[i] );
_cprintf_s( "\r\n" );
}
1 2 3
You entered 1 2 3
Vedi anche
I/O della console e della porta
_cprintf
, _cprintf_l
, _cwprintf
_cwprintf_l
fscanf_s
, _fscanf_s_l
, fwscanf_s
_fwscanf_s_l
scanf_s
, _scanf_s_l
, wscanf_s
_wscanf_s_l
sscanf_s
, _sscanf_s_l
, swscanf_s
_swscanf_s_l