Condividi tramite


scanf, _scanf_l, wscanf, _wscanf_l

Legge i dati formattatati dal flusso di input standard. Sono disponibili versioni più sicure di questa funzione; 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 di controllo del formato.

  • argument
    Argomenti facoltativi.

  • locale
    Impostazioni locali da utilizzare.

Valore restituito

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

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

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

Note

La funzione scanf legge i dati dal flusso di input standard stdin e scrive i dati nella locazione che è data da argument. Ogni argument deve essere un puntatore alla variabile di un tipo che corrisponde ad un tipo specificato in format. Se la copia avviene tra stringhe che si sovrappongono, il comportamento non è definito.

Nota sulla sicurezzaNota sulla sicurezza

Quando si legge una stringa con scanf specificare sempre una larghezza per il formato %s (ad esempio, "%32s" anziché "%s"); in caso contrario, un input inappropriato può facilmente causare un sovraccarico del buffer.In alternativa, considerare l'utilizzo di scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l o 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 attualmente non supporta l'input da un flusso di UNICODE.

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

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Per ulteriori informazioni, vedere Specifiche formato dei campi - funzioni scanf e funzioni wscanf.

Requisiti

Routine

Intestazione obbligatoria

scanf, _scanf_l

<stdio.h>

wscanf, _wscanf_l

<stdio.h> o <wchar.h>

La console non è supportata nelle applicazioni Windows Store. Gli handle del flusso standard associati alla console,stdin, stdout e stderr, devono essere reindirizzati prima di poter utilizzare le funzioni di runtime del linguaggio C nelle applicazioni Windows Store. Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

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 a virgola mobile

I/O di flusso

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