Campi per la specifica di formato: funzioni scanf e wscanfFormat Specification Fields: scanf and wscanf Functions

Le informazioni riportate si applicano all'intera famiglia di funzioni scanf, incluse le versioni sicure e descrivono i simboli utilizzati per comunicare alle funzioni scanf come analizzare il flusso di input, come il flusso di input stdin per scanf, in valori che vengono inseriti nelle variabili del programma.The information here applies to the entire scanf family of functions, including the secure versions and describes the symbols used to tell the scanf functions how to parse the input stream, such as the input stream stdin for scanf, into values that are inserted into program variables.

Una specifica di formato presenta la forma seguente:A format specification has the following form:

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

L'argomento format specifica l'interpretazione dell'input e può contenere uno o più dei seguenti:The format argument specifies the interpretation of the input and can contain one or more of the following:

  • Spazi vuoti: vuoto (' '); tabulazione ('\t'); nuova riga ('\n').White-space characters: blank (' '); tab ('\t'); or newline ('\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.A white-space character causes scanf to read, but not store, all consecutive white-space characters in the input up to the next non-white-space character. Un carattere di spazio vuoto nel formato corrisponde a qualsiasi numero (0 incluso) e combinazione di caratteri di spazio vuoto nell'input.One white-space character in the format matches any number (including 0) and combination of white-space characters in the input.

  • Caratteri diversi da uno spazio vuoto, ad eccezione del segno di percentuale (%).Non-white-space characters, except for the percent sign (%). Un carattere diverso da uno spazio vuoto comporta che scanf legga, ma non memorizzi, un carattere diverso da uno spazio vuoto corrispondente.A non-white-space character causes scanf to read, but not store, a matching non-white-space character. Se il carattere successivo nel flusso di input non corrisponde, scanf termina.If the next character in the input stream does not match, scanf terminates.

  • Specifiche di formato, introdotte dal segno di percentuale (%).Format specifications, introduced by the percent sign (%). Una specifica di formato fa sì che scanf legga e converta i caratteri nell'input in valori di un tipo specificato.A format specification causes scanf to read and convert characters in the input into values of a specified type. Il valore viene assegnato a un argomento nell'elenco degli argomenti.The value is assigned to an argument in the argument list.

    Il formato viene letto da sinistra a destra.The format is read from left to right. Ci si aspetta che i caratteri al di fuori delle specifiche di formato corrispondano alla sequenza di caratteri nel flusso di input; i caratteri corrispondenti nel flusso di input vengono analizzati ma non memorizzati.Characters outside format specifications are expected to match the sequence of characters in the input stream; the matching characters in the input stream are scanned but not stored. 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.If a character in the input stream conflicts with the format specification, scanf terminates, and the character is left in the input stream as if it had not been read.

    Quando viene trovata la prima specifica di formato, il valore del primo campo di input viene convertito in base alla specifica e viene memorizzato nella posizione specificata dal primo argument.When the first format specification is encountered, the value of the first input field is converted according to this specification and stored in the location that is specified by the first argument. La seconda specifica di formato fa sì che il secondo campo di input venga convertito e memorizzato nel secondo argument e così via fino alla fine della stringa di formato.The second format specification causes the second input field to be converted and stored in the second argument, and so on through the end of the format string.

    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 di formato, oppure fino a quando non venga raggiunta la larghezza del campo (se specificata).An input field is defined as all characters up to the first white-space character (space, tab, or newline), or up to the first character that cannot be converted according to the format specification, or until the field width (if specified) is reached. Se sono presenti troppi argomenti per le specifiche date, gli argomenti aggiuntivi vengono valutati ma ignorati.If there are too many arguments for the given specifications, the extra arguments are evaluated but ignored. I risultati non sono prevedibili se non vi sono argomenti sufficienti per la specifica di formato.The results are unpredictable if there are not enough arguments for the format specification.

    Ogni campo della specifica di formato è un carattere singolo o un numero che indica un'opzione di formattazione particolare.Each field of the format specification is a single character or a number signifying a particular format option. 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.The type character, which appears after the last optional format field, determines whether the input field is interpreted as a character, a string, or a number.

    La specifica di formato più semplice contiene solo il segno di percentuale e un carattere type (ad esempio, %s).The simplest format specification contains only the percent sign and a type character (for example, %s). Se un segno di percentuale (%) è seguito da un carattere che non ha significato di carattere di controllo del formato, tale carattere e i caratteri seguenti (fino al segno di percentuale successivo) vengono considerati come una sequenza di caratteri ordinaria, ovvero, una sequenza di caratteri che deve corrispondere all'input.If a percent sign (%) is followed by a character that has no meaning as a format-control character, that character and the following characters (up to the next percent sign) are treated as an ordinary sequence of characters, that is, a sequence of characters that must match the input. Ad esempio, per specificare che un carattere segno di percentuale deve essere di input, utilizzare %%.For example, to specify that a percent-sign character is to be input, use %%.

    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.An asterisk (*) following the percent sign suppresses assignment of the next input field, which is interpreted as a field of the specified type. Il campo viene analizzato ma non memorizzato.The field is scanned but not stored.

    Le versioni sicure (quelle con il suffisso _s) della famiglia di funzioni scanf richiedono che venga passato un parametro di dimensione del buffer immediatamente dopo ciascun parametro di tipo c, C, s, S o [.The secure versions (those with the _s suffix) of the scanf family of functions require that a buffer size parameter be passed immediately following each parameter of type c, C, s, S or [. Per altre informazioni sulle versioni sicure della famiglia di funzioni scanf, vedere scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.For more information on the secure versions of the scanf family of functions, see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

Vedere ancheSee Also

Specifica della larghezza per scanf scanf Width Specification
Caratteri di campo di tipo per scanf scanf Type Field Characters
scanf, _scanf_l, wscanf, _wscanf_l scanf, _scanf_l, wscanf, _wscanf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l