scanf, _scanf_l, wscanf, _wscanf_l

Dati formattati letti dal flusso di input standard.Più versioni sicure di queste funzioni sono disponibili, vedere scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

int scanf(
   const char *format [,
   argument]... 
);
int _scanf_l(
   const char *format,
   locale_t locale [,
   argument]... 
);
int wscanf(
   const wchar_t *format [,
   argument]... 
);
int _wscanf_l(
   const wchar_t *format,
   locale_t locale [,
   argument]... 
);

Parametri

  • format
    Stringa del controllo di formato.

  • argument
    Argomenti facoltativi.

  • locale
    Le impostazioni locali da utilizzare.

Valore restituito

Restituisce il numero di campi convertiti correttamente e assegnati; il valore restituito non include campi che sono stati letti ma non assegnato.Un valore restituito pari a 0 indica che nessun campo è stato assegnato.

Se format è un puntatore di NULL, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se all'esecuzione è permesso continuare, queste funzioni restituiscono EOF e impostano errno a EINVAL.

Per ulteriori informazioni su questi, e altri, codici di errore vedere _doserrno, errno, _sys_errlist, and _sys_nerr .

Note

La funzione di scanf legge i dati dal flusso di input standard stdin e scrive i dati nella posizione specificata da argument.Ogni argument deve essere un puntatore a una variabile di un tipo che corrisponde a un identificatore del tipo in format.Se copiare è compresa tra stringhe che si sovrappongono, il comportamento è definito.

Nota sulla sicurezzaNota sulla sicurezza

Durante la lettura di una stringa con scanf, specificare sempre una larghezza per il formato di %s, ad esempio "%32s" anziché "%s"); in caso contrario, l'input in un formato inappropriato può facilmente causare un sovraccarico del buffer.In alternativa, prendere in considerazione l'utilizzo di scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l o di fgets.

wscanf è una versione a caratteri estesi di scanf; l'argomento format in wscanf è una stringa di caratteri estesi.wscanf e scanf si comportano in modo identico se il flusso viene aperto in modalità ANSI.scanf non supporta attualmente l'input da un flusso di UNICODE.

Le versioni di queste funzioni con il suffisso _l sono identiche ad eccezione che utilizzano il parametro delle impostazioni locali passato in ingresso invece di utilizzare quelle del thread corrente.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Per ulteriori informazioni, vedere La specifica di formato sistema — funzioni di scanf e funzioni di wscanf.

Requisiti

Routine

Intestazione obbligatoria

scanf, _scanf_l

<stdio.h>

wscanf, _wscanf_l

<stdio.h> o <wchar.h>

La console non è supportata nelle applicazioni di Windows Store.L'handle standard del flusso associate alla console, stdin, stdoute stderr, devono essere reindirizzati prima di funzioni di runtime del linguaggio C possono essere utilizzate nelle applicazioni di Windows Store.Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

// crt_scanf.c
// compile with: /W3
 /* This program uses the scanf and wscanf functions
  * to read formatted input.
  */

#include <stdio.h>

int main( void )
{
   int   i, result;
   float fp;
   char  c, s[81];
   wchar_t wc, ws[81];
   result = scanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws ); // C4996
   // Note: scanf and wscanf are deprecated; consider using scanf_s and wscanf_s
   printf( "The number of fields input is %d\n", result );
   printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
   result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws ); // C4996
   wprintf( L"The number of fields input is %d\n", result );
   wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
  

Equivalente .NET Framework

Vedere anche

Riferimenti

Supporto per le operazioni in virgola mobile

Flusso I/O

Impostazioni locali

fscanf, _fscanf_l, fwscanf, _fwscanf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

sscanf, _sscanf_l, swscanf, _swscanf_l