Condividi tramite


_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 contengono i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

Importante

Questa API non può essere utilizzata nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.

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 utilizzare.

Valore restituito

Il numero di campi che sono stati correttamente convertiti e assegnati. Il valore restituito non include campi che sono stati letti ma non assegnati. Il valore restituito è EOF per un tentativo di lettura alla fine di un file. Questa situazione può verificarsi quando l'input della tastiera viene reindirizzato a livello di riga di comando del sistema operativo. Un valore restituito pari a 0 significa che nessun campo è stato assegnato.

Queste funzioni convalidano i parametri. Se format è un puntatore null, queste funzioni richiamano il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EOF e impostano errnosu EINVAL.

Note

La funzione _cscanf_s legge i dati direttamente dalla console nelle posizioni indicate da argument. La funzione _getche viene utilizzata per leggere caratteri. Ogni parametro opzionale deve essere un puntatore a una variabile di un tipo che corrisponde ad un identificatore del tipo format. Il formato controlla l'interpretazione dei campi di input e ha lo stesso form e funzione di un parametro format per la funzione scanf_s. Mentre _cscanf_s generalmente visualizza il carattere di input, non esegue questa operazione se l'ultima chiamata a è stata a _ungetch.

Analogamente ad altre versioni sicure delle funzioni nella famiglia scanf,_cscanf_s e _cswscanf_s richiedono la dimensione degli argomenti per i caratteri di campo di tipo c, C, s, S e [. Per ulteriori 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 in ingresso invece di utilizzare quelle del thread corrente.

Mapping di routine su testo generico

Routine TCHAR.H

_UNICODE e _MBCS non definiti

_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

Routine

Intestazione obbligatoria

_cscanf_s,_cscanf_s_l

<conio.h>

_cwscanf_s, _cwscanf_s_l

<conio.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere 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" );
}

Input

1 2 3

Output

You entered 1 2 3

Vedere anche

Riferimenti

I/O console e 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