Che bello quando vengono forniti tutti i dati e non è necessario inserire nulla. Ma fidati, non è quasi mai così. Ricorda la scuola quando hai misurato determinate cose e poi hai inserito i valori ottenuti nelle formule necessarie.
scanf
Nel linguaggio C, oltre alla funzione di output printf, c'è anche funzione scanf per l'input. Ecco la funzione scanf che esamineremo ora più in dettaglio:
int io;
scanf("%d", &i);
Sembra molto simile alla funzione printf. C'è anche dentro virgolette identificatore di formato, ma la differenza è solo nella seconda parte della funzione. Prestare attenzione all'aspetto del segno (&)? Quindi questo segno significa prendere l'indirizzo. Lascia che ti spieghi perché questo è necessario.
Dobbiamo scrivere il valore inserito non da qualche parte lì, ma esattamente all'indirizzo in cui si trova la nostra variabile. Quelli. senza il segno (&), il nostro valore inserito cadrà in tutti i posti tranne quello di cui abbiamo bisogno. Pertanto, ogni volta che devi inserire valori da tastiera, fai precedere la variabile da un segno di indirizzo (&).
Identificatori di formato
Bene, ora andiamo a fondo identificatori di formato:- %d - legge un numero intero
- %o - leggi numero ottale
- %x - legge il numero esadecimale
- %e(%f) - leggi il numero reale
- %s - leggi il carattere
- %s - leggi la riga
int io;
scanf("%d", &i);
int io;
scanf("%o", &i);
int io;
scanf("%x", &i);
galleggiante;
scanf("%f", &t);
char;
scanf("%c", &ch);
carattere*str;;
scanf("%s",str);
Non approfondire ancora il lavoro con le stringhe. Perché non c'è il segno dell'indirizzo? Considereremo questo argomento un po 'più tardi.
Operazioni di confronto
Il computer era originariamente logica booleana, cioè. tutto è basato su 0 e 1. Se non capisci di cosa si tratta, riconsidera il film The Matrix, in cui ogni salvaschermo verde consisteva solo in questi due numeri magici.
Certo, 0 e 1 vanno bene, ma abbiamo bisogno di un senso logico, quindi dentro operazioni logiche 0 è FALSO e 1 è VERO. Questi concetti di VERO e FALSO sono strettamente correlati a operazioni di confronto. Per cominciare, presentiamo tutti i tipi di operazioni di confronto:
Fondamentalmente, l'errore più comune commesso dai principianti è confondere l'operatore di assegnazione (=). operazione di confronto(==). Queste sono cose completamente diverse. Ma all'inizio della codifica, tutti hanno errori su questa base, quindi fai attenzione.
Si prega di mettere in pausa AdBlock su questo sito.
Torniamo all'ultimo elenco dell'ultimo passaggio:
Listato 1.
#includere
Il compito principale di questo passaggio è imparare come ottenere i dati dall'utente.
È possibile utilizzare la funzione scanf per questo. Come la funzione printf, è descritta in file di intestazione stdio.h Perché lo abbiamo già collegato nella prima riga, quindi possiamo usare liberamente la funzione scanf nel nostro programma.
Fig. 1. La sintassi generale della funzione scanf.
Le virgolette doppie indicano l'identificatore di formato. A seconda di quale variabile memorizzeremo il valore inserito, è necessario utilizzare l'identificatore di formato appropriato.
Identificatori di formato di base:
%d- numeri interi
%f- numero reale tipo galleggiante
%lf- numero reale digita doppio(notazione lf da float lungo)
%c- simbolo
Si noti che la funzione scanf utilizza identificatori di formato diversi per i tipi float e double.
Dopo la format-string, devi specificare l'indirizzo della variabile in cui vuoi salvare i dati. Per specificare l'indirizzo di una variabile è sufficiente scrivere il segno & (e commerciale) prima del suo nome, come nella figura sopra.
Scriviamo, infine, un programma per sommare due numeri.
Listato 2.
#includere
Compila ed esegui questo programma. Dopo che il programma è stato avviato, attenderà che tu inserisca i dati. Io e te sappiamo quali dati devi inserire, perché. abbiamo scritto questo programma. Per gli altri utenti che non vedranno il codice del programma, sarebbe bello visualizzare un suggerimento sullo schermo quali dati inserire. Guarda come viene implementato nell'esempio seguente.
Questo programma sarà utile per coloro che controllano la propria salute. Questo programma calcola il metabolismo basale utilizzando la formula Mifflin-St.Geor in base ai dati inseriti (età, altezza e peso).
Listato 3.
#includere
In realtà, la funzione scanf è una funzione di input del formato. È quasi più complicato di printf . Ma raccontare a un principiante le caratteristiche del suo lavoro è caricarlo invano. ulteriori informazioni. In questa fase, questa conoscenza ti sarà sufficiente e quando sarà necessario utilizzare qualcosa di più, potrai affrontarla da solo. O forse te lo dirò in qualche lezione.
La libreria standard C/C++ include una serie di funzioni per la lettura e la scrittura sulla console (tastiera e monitor). Queste funzioni leggono e scrivono dati come un semplice flusso di caratteri.
Il concetto di stream (stream), utilizzato nella programmazione, è strettamente correlato alla consueta comprensione quotidiana di questa parola. Il flusso in ingresso può essere confrontato con un tubo attraverso il quale l'acqua (informazioni) entra nella piscina (memoria del computer), il flusso in uscita - con un tubo attraverso il quale l'acqua lascia la piscina. Una caratteristica importante Questa pipe è che i dati possono spostarsi solo in una direzione alla volta. Anche se lo stesso tubo viene utilizzato per l'ingresso e l'uscita, non può accadere contemporaneamente: per cambiare la direzione del flusso, è necessario interromperlo, eseguire alcune azioni e solo allora dirigere il flusso nella direzione opposta. Un'altra caratteristica del flusso è che non si asciuga quasi mai. A volte si esaurisce, ma questo periodo non può essere lungo se il sistema funziona normalmente.
printf() funzione di output standard
La funzione printf() è una funzione di output standard. Con questa funzione è possibile visualizzare sullo schermo del monitor una stringa di caratteri, un numero, un valore variabile...
La funzione printf() ha un prototipo nel file stdio.h
int printf(char *stringa di controllo, ...);
In caso di successo, la funzione printf() restituisce il numero di caratteri stampati.
La stringa di controllo contiene due tipi di informazioni: caratteri che vengono visualizzati direttamente sullo schermo e identificatori di formato che determinano come restituire gli argomenti.
La funzione printf() è una funzione di output formattata. Ciò significa che nei parametri di funzione è necessario specificare il formato dei dati da emettere. Il formato dei dati è specificato dagli identificatori di formato. L'identificatore di formato inizia con una % seguita da un codice di formato.
Identificatori di formato:
%Insieme a | simbolo |
%d | totale numero decimale |
%io | numero decimale intero |
% e | numero decimale nella forma x.xx e+xx |
%E | numero decimale nella forma x.xx E+xx |
%f | |
%F | virgola mobile decimale xx.xxxx |
%g | %f o %e qualunque sia il più breve |
%G | %F o %E a seconda di quale sia il più breve |
%o | numero ottale |
%S | stringa di caratteri |
%u | numero decimale senza segno |
%X | numero esadecimale |
%X | numero esadecimale |
%% | simbolo % |
%p | puntatore |
%n | puntatore |
Inoltre, i modificatori l e h possono essere applicati ai comandi di formattazione.
%ld | stampa lunga int |
%uu | stampa breve non firmato |
%Lf | stampa lungo doppio |
Nell'identificatore di formato, dopo il simbolo %, è possibile specificare la precisione (il numero di cifre dopo il punto decimale). La precisione è impostata come segue: %.n<код формата>. Dove n è il numero di cifre dopo la virgola decimale, e<код формата>- uno dei codici sopra.
Ad esempio, se abbiamo una variabile x=10.3563 di tipo float e vogliamo visualizzarne il valore con una precisione di 3 cifre decimali, allora dovremmo scrivere:
printf("Variabile x = %.3f",x);
Risultato:
Variabile x = 10.356
È inoltre possibile specificare la larghezza minima del margine da stampare. Se la stringa o il numero è maggiore della larghezza del campo specificata, la stringa o il numero viene stampato per intero.
Ad esempio, se scrivi:
printf("%5d",20);
allora il risultato sarà:
20
Si noti che il numero 20 non è stato stampato dall'inizio della riga. Se vuoi che le posizioni inutilizzate del campo vengano riempite con zeri, devi inserire il carattere 0 davanti alla larghezza del campo.
Per esempio:
printf("%05d",20);
Risultato:
00020
Oltre agli identificatori di formato dati in linea di controllo i caratteri di controllo possono essere:
\b | BS, fondo |
\f | Nuova pagina, traduzione di pagine |
\n | Nuova riga, avanzamento riga |
\r | Ritorno in carrozza |
\t | Scheda orizzontale |
\v | Scheda verticale |
\" | doppia citazione |
\" | Apostrofo |
\\ | Barra rovesciata |
\0 | Carattere nullo, byte nullo |
\un | Segnale |
\N | Costante ottale |
\xN | Costante esadecimale |
\? | Punto interrogativo |
Molto spesso utilizzerai il carattere \n. Con questo personaggio di controllo sarai in grado di saltare a una nuova riga. Guarda gli esempi di programmi e capirai tutto.
Esempi di programma.
/* Esempio 1 */
#includere
vuoto principale (vuoto)
{
int a,b,c; // Anno Domini variabili a,b,c
a=5;
b=6;
c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
}
Il risultato del programma:
a=5, b=6, c=9
/* Esempio 2 */
#includere
vuoto principale (vuoto)
{
galleggiante x,y,z;
X=10,5;
y=130,67;
z=54;
Printf("Coordinate oggetto: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}
Il risultato del programma:
Coordinate oggetto: x:10.50, y:130.67, z:54.00
/* Esempio 3 */
#includere
vuoto principale ()
{
intx;
X=5;
printf("x=%d", x*2);
}
Il risultato del programma:
x=10
/* Esempio 4 */
#includere
vuoto principale (vuoto)
{
printf("\"Testo tra virgolette\"");
printf("\nContenuto di ossigeno: 100%%");
}
Il risultato del programma:
"Testo tra virgolette"
Contenuto di ossigeno: 100%
/* Esempio 5 */
#includere
vuoto principale (vuoto)
{
int a;
A=11; // 11 in decimale è uguale a b in esadecimale
printf("a-dec=%d, a-hex=%X",a,a);
}
Il risultato del programma:
a-dec=11, a-hex=b
/* Esempio 6 */
#includere
vuoto principale (vuoto)
{
char ch1,ch2,ch3;
Ch1="A";
ch2="B";
ch3="C";
Printf("%c%c%c",ch1,ch2,ch3);
}
Il risultato del programma:
ABC
/* Esempio 7 */
#includere
vuoto principale (vuoto)
{
char *str="La mia stringa.";
Printf("Questo è %s",str);
}
Il risultato del programma:
Questa è la mia linea.
/* Esempio 8 */
#includere
vuoto principale (vuoto)
{
printf("Ciao!\n"); // Dopo la stampa, ci sarà una nuova riga - \n
printf("Mi chiamo Paolo."); // Verrà stampato su una nuova riga
}
Il risultato del programma:
Ciao!
Mi chiamo Pavel.
scanf() funzione di input standard
funzione scanf() - funzione di input formattato. Ti permette di inserire dati da dispositivo standard input (tastiera). Gli input possono essere numeri interi, numeri in virgola mobile, caratteri, stringhe e puntatori.
La funzione scanf() ha il seguente prototipo in stdio.h:
int scanf(carattere *stringa di controllo);
La funzione restituisce il numero di variabili a cui è stato assegnato un valore.
La stringa di controllo contiene tre tipi di caratteri: identificatori di formato, spazi e altri caratteri. Gli identificatori di formato iniziano con il carattere %.
Identificatori di formato:
Quando si inserisce una stringa usando la funzione scanf() (identificatore di formato %s), la stringa viene inserita fino al primo spazio!! quelli. se inserisci la stringa "Hello world!" usando la funzione scanf()
scanf("%s",str);
quindi dopo aver inserito la stringa risultante, che verrà archiviata nell'array str, sarà composta da una parola "Hello". LA FUNZIONE ENTRA IN STRINGA FINO AL PRIMO SPAZIO! Se vuoi inserire stringhe con spazi, usa la funzione
char *gets(char *buf);
Con la funzione gets(), puoi inserire stringhe complete. La funzione gets() legge i caratteri dalla tastiera finché non viene visualizzato un carattere nuova linea(\n). Il carattere di nuova riga viene visualizzato quando si preme tasto Invio. La funzione restituisce un puntatore a buf. buf - buffer (memoria) per la stringa di input.
Anche se gets() non rientra nell'ambito di questo articolo, scriviamo un programma di esempio che consente di inserire un'intera riga dalla tastiera e di visualizzarla sullo schermo.
#includere
vuoto principale (vuoto)
{
carbone di legna; // array (buffer) per la stringa di input
Ottiene (buffer); // inserisci una stringa e premi invio
printf("%s",buffer); // visualizza sullo schermo la stringa inserita
}
Altro nota importante! Per inserire i dati utilizzando la funzione scanf(), è necessario passare gli indirizzi delle variabili come parametri e non le variabili stesse. Per ottenere l'indirizzo di una variabile, fai precedere il nome della variabile con & (e commerciale). Il segno & significa prendere l'indirizzo.
Cosa significa indirizzo? Provo a spiegare. Nel programma abbiamo una variabile. Una variabile memorizza il suo valore nella memoria del computer. Quindi l'indirizzo che otteniamo con & è l'indirizzo nella memoria del computer in cui è memorizzato il valore della variabile.
Diamo un'occhiata a un programma di esempio che ci mostra come usare &
#includere
vuoto principale (vuoto)
{
intx;
Printf("Inserisci variabile x:");
scanf("%d",&x);
printf("Variabile x=%d",x);
}
Ora torniamo alla linea di controllo della funzione scanf(). Ancora:
int scanf(carattere *stringa di controllo);
Il carattere spazio nella riga di controllo indica di saltare uno o più spazi nel flusso di input. Oltre a uno spazio, è possibile accettare un carattere di tabulazione o di nuova riga. Un carattere non nullo indica di leggere e scartare quel carattere.
I separatori tra due numeri di input sono spazi, tabulazioni o caratteri di nuova riga. Il * dopo la % e prima del codice di formato (identificatore di formato) indica di leggere i dati del tipo specificato, ma non di assegnare quel valore.
Per esempio:
scanf("%d%*c%d",&i,&j);
digitando 50+20 imposterà i su 50, j su 20 e il + verrà letto e ignorato.
Il comando format può specificare la larghezza del campo più grande da leggere.
Per esempio:
scanf("%5s",str);
specifica di leggere i primi 5 caratteri dal flusso di input. Se inserisci 1234567890ABC, l'array str conterrà solo 12345, il resto dei caratteri verrà ignorato. Separatori: spazio, tabulazione e nuova riga - quando si inserisce un carattere, vengono trattati come tutti gli altri caratteri.
Se vengono rilevati altri caratteri nella stringa di controllo, sono destinati a determinare e ignorare il carattere corrispondente. Flusso di caratteri 10plus20 per operatore
scanf("%dplus%d",&x,&y);
assegnerà x a 10, y a 20 e salterà i caratteri più perché si trovano sulla linea di controllo.
Uno di caratteristiche potenti la funzione scanf() è la capacità di impostare il set di ricerca (scanset). Il set di ricerca definisce l'insieme di caratteri con cui verranno confrontati i caratteri letti da scanf(). La funzione scanf() legge i caratteri fintanto che si verificano nel set di ricerca. Una volta che il carattere immesso non viene trovato nel set di ricerca, la funzione scanf() passa all'identificatore di formato successivo. Il set di ricerca è definito da un elenco di caratteri racchiusi tra parentesi quadre. La parentesi aperta è preceduta da un segno %. Diamo un'occhiata a questo con un esempio.
#includere
vuoto principale (vuoto)
{
carattere str1, str2;
scanf("%%s", str1, str2);
printf("\n%s\n%s",str1,str2);
}
Inseriamo un set di caratteri:
12345abcdefg456
Sullo schermo il programma visualizzerà:
12345
abcdefg456
Quando si specifica un set di ricerca, è anche possibile utilizzare il trattino per specificare gli spazi, nonché la larghezza massima del campo di input.
scanf("%10", str1);
Puoi anche definire caratteri che non sono nel set di ricerca. Il primo di questi caratteri è preceduto da un segno ^. Il set di caratteri distingue tra lettere minuscole e maiuscole.
Lascia che ti ricordi che quando usi la funzione scanf(), devi passarle gli indirizzi delle variabili come parametri. Il codice sopra è stato scritto:
carta; // array per 80 caratteri
scanf("%s",str);
Si noti che str non è preceduto da &. Questo perché str è un array e il nome dell'array, str, è un puntatore al primo elemento dell'array. Pertanto, il segno & non viene inserito. Stiamo già passando l'indirizzo alla funzione scanf(). Bene, in poche parole, str è l'indirizzo nella memoria del computer in cui verrà archiviato il valore del primo elemento dell'array.
Esempi di programma.
Esempio 1
Questo programma visualizza la query "Quanti anni hai?:" e attende l'input. Se ad esempio si inserisce il numero 20, il programma visualizzerà la stringa "Hai 20 anni.". Quando abbiamo chiamato la funzione scanf(), abbiamo prefissato la variabile age con un &, perché la funzione scanf() necessita degli indirizzi delle variabili. La funzione scanf() scriverà il valore inserito in base a indirizzo specificato. Nel nostro caso, il valore inserito 20 verrà scritto all'indirizzo della variabile età.
/* Esempio 1 */
#includere
vuoto principale (vuoto)
{
età intera;
Printf("\nQuanti anni hai?:");
scanf("%d",&age);
printf("Hai %d anni.", età);
}
Esempio 2
Programma calcolatrice. Questa calcolatrice può solo aggiungere numeri. Se inserisci 100+34, il programma restituirà il risultato: 100+34=134.
/* Esempio 2 */
#includere
vuoto principale (vuoto)
{
int x, y;
Printf("\nCalcolatrice:");
scanf("%d+%d", &x, &y);
printf("\n%d+%d=%d", x, y, x+y);
}
Esempio 3
Questo esempio mostra come impostare la larghezza del campo di lettura. Nel nostro esempio, la larghezza del campo è di cinque caratteri. Se inserisci una riga con grande quantità personaggi, tutti i personaggi dopo il 5 verranno scartati. Prestare attenzione alla chiamata alla funzione scanf(). Il segno & non precede il nome del nome dell'array perché il nome del nome dell'array è l'indirizzo del primo elemento dell'array.
/* Esempio 3 */
#includere
vuoto principale (vuoto)
{
nome del personaggio;
Printf("\nInserisci il tuo nome utente (massimo 5 caratteri):");
scanf("%5s", nome);
printf("\nHai inserito %s", nome);
}
Esempio 4
L'ultimo esempio in questo articolo mostra come utilizzare il set di ricerca. Dopo aver avviato il programma, inserire un numero da 2 a 5.
/* Esempio 4 */
#includere
vuoto principale (vuoto)
{
carbale;
Printf("Il tuo punteggio è 2,3,4,5:");
scanf("%", &bal);
printf("\nPunteggio %c", bal);
}
La funzione scanf() è una procedura di input scopo generale A che legge i dati dal flusso stdin. Può leggere i dati di tutti tipi di base e convertirli automaticamente nel formato interno desiderato. Se printf() eseguisse l'input anziché l'output, potrebbe essere chiamato l'analogo di scanf().
La stringa di controllo a cui punta il formato è composta da tre tipi di caratteri:
- Identificatori di formato
- Simboli speciali
- Altri caratteri (non speciali)
Gli identificatori di formato seguono il segno di percentuale e indicano a scanf() quale tipo di dati leggere successivamente. I codici degli identificatori sono riportati nella tabella.
Il codice | Significato |
---|---|
%Insieme a | Conta un carattere |
%d | |
%io | Conteggio numero decimale di tipo intero |
% e | |
%f | Conta il numero in virgola mobile |
%g | Conta il numero in virgola mobile |
%di | Conta il numero ottale |
%S | Linea di lettura |
%X | Conta il numero esadecimale |
%R | leggere il puntatore |
%n | Prende un valore intero uguale al numero di caratteri letti finora |
%u | Legge un intero senza segno |
% | Cerca un set di caratteri |
%% | Legge il carattere %. |
Ad esempio, %s legge una stringa e %d legge una variabile intera.
La stringa di formato viene letta da sinistra a destra, mappando i codici di formato agli argomenti nell'elenco degli argomenti.
I caratteri speciali nella stringa di controllo fanno sì che scanf() salti uno o più personaggi speciali nel flusso di input. I caratteri speciali sono spazio, tabulazione o nuova riga. Un singolo carattere speciale nella stringa di controllo fa sì che scanf() legga, senza ricordare, qualsiasi numero (incluso lo zero) di caratteri speciali consecutivi dal flusso di input finché non incontra un carattere che non è un carattere speciale.
Disponibilità carattere regolare fa in modo che scanf() legga e scarti il carattere corrispondente. Ad esempio, "%d,%d" fa in modo che scanf() legga un intero, legga e scarti la virgola, quindi legga un altro intero. Se il carattere specificato non viene trovato nel flusso di input, scanf() si interrompe.
Tutte le variabili utilizzate per ricevere valori utilizzando la funzione scanf() devono essere cercate in base ai loro indirizzi. Ciò significa che tutti gli argomenti delle funzioni devono essere puntatori a variabili. Pertanto, C crea la possibilità di passare per riferimento e ciò consente alla funzione di modificare il contenuto dell'argomento.
scanf("%d", &count);
Le stringhe vengono lette in array di caratteri e il nome dell'array, senza alcun puntatore, è l'indirizzo del primo elemento dell'array. Pertanto, per leggere una stringa nella matrice di caratteri dell'indirizzo, è possibile utilizzare il comando
scanf("%s", indirizzo);
In questo caso, il nome indirizzo è già un puntatore e non necessita del prefisso &.
Gli elementi di input devono essere separati da spazi, tabulazioni o nuove righe.
I segni di punteggiatura come virgola, punto e virgola, ecc. non sono considerati separatori. Ciò significa che per l'operatore
Scanf("%d%d", &r, &c);
La sequenza 10 20 sarà accettata, ma la sequenza 10,20 no. Gli identificatori di formato scanf() sono nello stesso ordine delle variabili nell'elenco degli argomenti, a cui vengono assegnati i valori delle variabili ricevute.
Un * posizionato dopo % e prima di un identificatore di formato legge i dati del tipo specificato, ma sopprime l'assegnazione. Così il codice
Scanf("%d%*c%d", &x, &y);
Entrando nella sequenza 10/20 si assegna il valore 10 a x, si scarta la / e si assegna il valore 20 a y.
I comandi di formattazione possono specificare un modificatore larghezza massima campi. È un numero intero che viene inserito tra il segno % e l'identificatore di formato. Limita il numero di caratteri letti per ogni campo. Ad esempio, se non vuoi leggere più di 20 caratteri nell'array di indirizzi, dovresti scrivere
Scanf("%20s", indirizzo);
Se il flusso di input conteneva più di 20 caratteri, la prossima volta che la funzione di input viene chiamata, inizierà l'input dal punto in cui l'input è stato interrotto durante la chiamata corrente. L'immissione di un campo può essere interrotta prima del raggiungimento lunghezza massima campi se c'è uno spazio. In questo caso, scanf() passa al campo successivo.
Sebbene spazi, tabulazioni e nuove righe vengano utilizzati come separatori di campo, vengono letti come qualsiasi altro carattere quando viene immesso un singolo carattere. Ad esempio, dato il flusso di input x y, la funzione
Scanf("%s%s%s", &a, &b, &c);
Metti il carattere x nella variabile a, lo spazio nella variabile b e y nella variabile c.
Fai attenzione: qualsiasi altro carattere nella stringa di controllo, inclusi spazi, tabulazioni e nuove righe, viene utilizzato per specificare ed eliminare i caratteri dal flusso di input. Ad esempio, con un flusso di input di 10t20, la funzione
Scanf("%st%s", &x, &y);
Mette 10 in x e 20 in y. Il carattere t verrà scartato perché nella stringa di controllo è presente una t.
Un'altra caratteristica della funzione scanf() è chiamata scan set. Il set di scansione definisce i caratteri che verranno letti dalla funzione scanf() e assegnati agli elementi dell'array di caratteri corrispondente. Per specificare un set di scansione, i caratteri il cui input è valido devono essere inseriti tra parentesi quadre. La prima parentesi quadra è preceduta da un segno di percentuale. Ad esempio, il seguente elenco di scan set fa sì che scanf() legga solo i caratteri A, B e C:
L'argomento dell'elenco dei set di scansione corrispondente deve essere un puntatore a una matrice di caratteri. Quando si utilizza un set di scansione, la funzione scanf() legge i caratteri e li inserisce nell'array specificato finché non incontra un carattere che non è nel set di scansione (ovvero, vengono letti solo i caratteri nel set di scansione).
L'array restituito da scanf() conterrà una stringa con terminazione null. L'elenco dei caratteri da leggere può essere specificato anche in forma inversa. Per fare ciò, metti ^ come primo carattere. Quindi scanf() accetterà qualsiasi carattere non incluso nello scan set.
Usando le virgolette, puoi specificare l'intervallo di caratteri accettati. Ad esempio, la seguente espressione dice a scanf() di accettare le lettere da "A" a "Z":
Il set di scansione distingue tra maiuscolo e minuscolo. Se vuoi che scanf() accetti entrambi, devi elencarli separatamente nello scan set.
La funzione scanf() restituisce un numero uguale al numero di campi i cui valori sono stati effettivamente assegnati alle variabili. Questo conteggio non include i campi che sono stati letti ma i loro valori non sono stati assegnati a nulla a causa dell'uso del modificatore * per sopprimere l'assegnazione. Se si è verificato un errore prima dell'assegnazione del valore del primo campo, viene restituito EOF.
Quando si utilizza Borland C++ in un ambiente a 16 bit, è possibile modificare il modello di memoria predefinito utilizzato per compilare un programma tramite indicazione esplicita la dimensione di ogni puntatore utilizzato nella chiamata scanf(). Il puntatore vicino è specificato dal modificatore N e il puntatore lontano dal modificatore F. (Non è possibile utilizzare il modificatore N se il programma è stato compilato per il modello di memoria enorme.)
]SCANF #includi