Campi di specifica del formato: scanf e wscanf funzioni

Le informazioni qui si applicano all'intera scanf famiglia di funzioni, incluse le versioni sicure. Descrive i simboli usati per indicare scanf alle funzioni come analizzare il flusso di input, ad esempio il flusso stdindi input , in valori inseriti nelle variabili di programma.

L'argomento format è una stringa che specifica l'interpretazione dell'input e può contenere una o più di:

  • Spazi vuoti: vuoto ( ); tabulazioni (\t) o nuova riga (\n). Un carattere di spazio vuoto comporta che scanf legga, ma non memorizzi, tutti i caratteri di spazio vuoti consecutivi nell'input fino al successivo carattere diverso da uno spazio vuoto. Un carattere di spazio vuoto nel formato corrisponde a qualsiasi numero (0 incluso) e combinazione di caratteri di spazio vuoto nell'input.

  • Caratteri diversi da uno spazio vuoto, ad eccezione del segno di percentuale (%). Un carattere diverso da uno spazio vuoto comporta che scanf legga, ma non memorizzi, un carattere diverso da uno spazio vuoto corrispondente. Se il carattere successivo nel flusso di input non corrisponde, scanf termina.

  • Specifiche di formato, introdotte dal segno di percentuale (%). Una specifica di formato determina la scanf lettura e la conversione dei caratteri nell'input in un valore di un tipo specificato. Il valore viene assegnato a un argomento nell'elenco degli argomenti.

    Una specifica di formato presenta la forma seguente:

    %[*][width][{h|l|ll|I64|L}]type

    In questo caso, width, llhl, , I64, e L rappresentano unascanf specifica di larghezza e type rappresenta un scanfcarattere di campo di tipo.

La stringa dell'argomento format viene letta da sinistra a destra. I caratteri esterni alle specifiche di formato devono corrispondere alla sequenza di caratteri nel flusso di input. I caratteri corrispondenti nel flusso di input vengono analizzati ma non archiviati. Se un carattere nel flusso di input è in conflitto con la specifica del formato, scanf termina e il carattere viene lasciato nel flusso di input come se non fosse stato letto.

Quando viene rilevata la prima specifica di formato, il valore del primo campo di input viene convertito in base a questa specifica. Questo valore viene archiviato nel percorso specificato dal primo argomento che segue l'argomento format . La seconda specifica del formato fa sì che il secondo campo di input venga convertito e archiviato nell'argomento successivo e così via, fino alla fine della stringa di formato.

Un campo di input viene definito come: tutti i caratteri fino al primo carattere di spazio vuoto (spazio, tabulazione o nuova riga) o fino al primo carattere che non può essere convertito in base alla specifica del formato o fino a quando non viene raggiunta la larghezza del campo (se specificato). Se sono presenti troppi argomenti per le specifiche date, gli argomenti aggiuntivi vengono valutati ma ignorati. I risultati sono imprevedibili se non sono presenti argomenti sufficienti per la specifica del formato.

Ogni campo della specifica di formato è un carattere singolo o un numero che indica un'opzione di formattazione particolare. Il carattere type, visualizzato dopo l'ultimo campo facoltativo di formato, determina se il campo di input viene interpretato come un carattere, una stringa o un numero.

La specifica di formato più semplice contiene solo il segno di percentuale e un carattere type (ad esempio, %s). Se un segno di percentuale (%) è seguito da un carattere che non ha alcun significato come carattere di controllo del formato, tale carattere e i caratteri seguenti (fino al segno di percentuale successivo) vengono considerati come una sequenza normale di caratteri. Ovvero, vengono considerati come una sequenza di caratteri che devono corrispondere all'input. Ad esempio, per specificare che un carattere segno di percentuale deve essere di input, utilizzare %%.

Un asterisco (*) che segue il segno di percentuale elimina l'assegnazione del campo di input successivo, il quale viene interpretato come un campo del tipo specificato. Il campo viene analizzato ma non archiviato in un argomento.

Le versioni sicure (quelle con il _s suffisso) della scanf famiglia di funzioni richiedono che ogni parametro di tipo c, C, sS o [ abbia un parametro di dimensione del buffer passato immediatamente dopo. Per altre informazioni sulle versioni sicure della scanf famiglia di funzioni, vederescanf_s , _scanf_s_l, wscanf_s, _wscanf_s_l.

Vedi anche

scanf Specifica della larghezza
scanf Digitare i caratteri dei campi
scanf, _scanf_l, wscanf, _wscanf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l