Condividi tramite


scanf caratteri di campo di tipo

Le informazioni seguenti si applicano a qualsiasi famiglia di funzioni scanf , incluse le versioni protette, ad esempio scanf_s.

Il carattere type è l'unico campo di formato obbligatorio e viene visualizzato dopo tutti i campi di formato facoltativi. Il carattere type carattere determina se l'argomento associato viene interpretato come carattere, stringa o numero.

type Caratteri per scanf le funzioni

Carattere Tipo di input previsto Tipo di argomento Argomento di dimensione nella versione protetta?
c Carattere. Una volta usato con funzioni scanf , specifica un carattere a byte singolo; quando usato con funzioni wscanf , specifica un carattere wide. Caratteri di spazio che normalmente vengono ignorati quando è specificato c . A differenza di altri campi di tipo, l'identificatore di larghezza del campo indica il numero esatto di caratteri, non il valore massimo. Per leggere il successivo carattere a un byte che non sia uno spazio vuoto, usare %1s. Per leggere il successivo carattere wide che non sia uno spazio vuoto, usare %1ws. Puntatore a char se usato con funzioni scanf , puntatore a wchar_t se usato con funzioni wscanf . Obbligatorio. Le dimensioni non includono spazio per un carattere di terminazione Null.
C Dimensioni carattere opposto. Una volta usato con funzioni scanf , specifica un carattere wide; quando usato con funzioni wscanf , specifica un carattere a singolo byte. Caratteri di spazio che normalmente vengono ignorati quando è specificato C . A differenza di altri campi di tipo, l'identificatore di larghezza del campo indica il numero esatto di caratteri, non il valore massimo. Per leggere il successivo carattere a un byte che non sia uno spazio vuoto, usare %1s. Per leggere il successivo carattere wide che non sia uno spazio vuoto, usare %1ws. Puntatore a wchar_t se usato con funzioni scanf , puntatore a char se usato con funzioni wscanf . Obbligatorio. L'argomento Size non include spazio per un carattere di terminazione Null.
d Integer decimale. Puntatore a int. No.
i Valore intero. Esadecimale se la stringa di input inizia con "0x" o "0X", ottale se la stringa inizia con "0", in caso contrario decimale. Puntatore a int. No.
o Integer ottale. Puntatore a int. No.
p Indirizzo del puntatore in cifre esadecimali. Il numero massimo di cifre lette dipende dalle dimensioni di un puntatore (32 bit o 64 bit), che dipende dall'architettura del computer. I prefissi accettati sono "0x" e "0X". Puntatore a void*. No.
u Intero decimale senza segno. Puntatore a unsigned int. No.
x Integer esadecimale. Puntatore a int. No.
e, E, f, F, gG Valore a virgola mobile composto dal segno (+ o -) facoltativo, serie di uno o più cifre decimali che include il separatore decimale e l'esponente facoltativo ("e" o "E") seguito facoltativamente da un intero con segno. Puntatore a float. No.
a, A Valore a virgola mobile costituito da una serie di una o più cifre esadecimali che contiene un separatore decimale facoltativo e un esponente ("p" o "P") seguito da un valore decimale. Puntatore a float. No.
n Nessun input letto dal flusso o buffer. Puntatore a intin cui è stato correttamente archiviato il numero di caratteri letti dal flusso o dal buffer fino un determinato punto della chiamata corrente alle funzioni scanf o wscanf . No.
s Stringa, fino al primo carattere di spazio vuoto (spazio, scheda o una nuova riga). Per leggere stringhe non delimitate da spazi, usare il set di parentesi quadre ([ ]), come descritto in scanf Specifica larghezza. Una volta usato con funzioni scanf , specifica una matrice di caratteri a singolo byte; quando usato con funzioni wscanf , specifica una matrice di caratteri wide. In entrambi i casi, la matrice di caratteri deve essere sufficientemente grande per il campo di input e il carattere di terminazione null che viene aggiunto automaticamente. Obbligatorio. La dimensione include lo spazio per una terminazione NULL.
S Stringa di caratteri di dimensione opposta fino al primo carattere di spazio vuoto (spazio, scheda o una nuova riga). Per leggere stringhe non delimitate da spazi, usare il set di parentesi quadre ([ ]), come descritto in scanf Specifica larghezza. Quando viene usato con funzioni scanf, specifica una matrice di caratteri wide. Quando viene usato con funzioni wscanf, specifica una matrice di caratteri a un byte. In entrambi i casi, la matrice di caratteri deve essere sufficientemente grande per il campo di input e il carattere di terminazione null che viene aggiunto automaticamente. Obbligatorio. La dimensione include lo spazio per una terminazione NULL.

Gli argomenti di dimensione, se necessario, devono essere passati nell'elenco dei parametri immediatamente dopo l'argomento a cui si applicano. Ad esempio, il seguente codice:

char string1[11], string2[9];
scanf_s("%10s %8s", string1, 11, string2, 9);

legge una stringa con una lunghezza massima di 10 in string1e una stringa con una lunghezza massima di 8 in string2. Le dimensioni del buffer devono essere superiori di almeno un valore rispetto alle specifiche di larghezza poiché è necessario riservare dello spazio per una terminazione null.

La stringa di formato può gestire gli input di caratteri a singolo byte o wide, a prescindere che venga usata la versione con carattere a byte o una versione a caratteri wide. Pertanto, per leggere i caratteri a singolo byte o wide con funzioni scanf e wscanf , usare gli identificatori di formato come indicato di seguito.

Per leggere un carattere come Utilizzare questa funzione Con questi identificatori di formato
a un byte scanf funzioni c, hc o hC
a un byte wscanf funzioni C, hc o hC
wide wscanf funzioni c, lc o lC
wide scanf funzioni C, lc o lC

Per analizzare le stringhe con funzioni scanf e wscanf , usare la tabella sopra riportata con identificatori di tipo di formato s e S anziché c e C.

Vedi anche

scanf, _scanf_l, wscanf_wscanf_l