In questa lezione studieremo come utilizzare le funzioni di input e output in linguaggio C.
Le funzioni di input
Le funzioni di input in C che analizzeremo sono scanf, getc e getchar.
scanf()
La funzione scanf consente di acquisire una sequenza di caratteri (lettere o cifre) dalla tastiera e di memorizzarli all'interno di opportune variabili.
Sintassi
scanf(<StringaDiFormato>,[&]Variabile1, [&]Variabile2, ...); StringaDiFormato: rappresenta lo specificatore di formato ed è introdotta dal simbolo % Variabile: rappresenta il nome della variabile all'interno della quale dovrà essere memorizzato il dato proveniente dalla tastiera. &: l'operatore & (se necessario) dovrebbe essere utilizzato per passare l'indirizzo di memoria della variabile. Ma l'operatore & non è sempre necessario per tutte le variabili, dipende dal tipo di dati. Ad esempio, è necessario utilizzare & per leggere dati in tipi di dati non puntatore come int, float, char, ecc., ma non è necessario per tipi di dati puntatore come char*, int*, ecc.
Specificatore di formato
Specificatore di formato
Espresssione
Visualizza sul monitor
%c
char
carattere singolo
%d (%i)
int
intero decimale con segno
%e (%E)
float o double
formato esponenziale
%f
float o double
reale con segno
%g (%G)
float o double
utilizza %f o %e in base alle esigenze
%0
int
valore in base 8 senza segno
%p
pointer
valore di una variabile puntatore
%s
array of char
stringa (sequenza) di caratteri
%u
int
intero senza segno
%x (%X)
int
valore in base 16 senza segno
Es: scanf("%d", &base);
Il simbolo & davanti alla variabile indica l'indirizzo di memoria in cui si trova la variabile base.
Si interpreta in questo modo: leggi un dato intero e collocalo nella posizione di memoria il cui indirizzo è &base.
Es: scanf("%d %d", &x, &y);
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
⏱️9 ore di corso registrato
🧩Più di 50 algoritmi risolti passo passo
🎯Livello base
💻100% online, fruibile quando vuoi
Questa istruzione acquisisce due numeri interi memorizzate nelle variabili x e y
L'omissione di & non comporta nessun messaggio di errore da parte del compilatore, ma comporta degli errori nei risultati.
getc()
La funzione getc è utilizzata per leggere un singolo carattere da un file, ma può leggere anche un carattere da tastiera.
Esempio
#include <stdio.h>
int main() {
char c;
printf("Inserisci un carattere: "); // Chiede all'utente di inserire un carattere
c = getc(stdin); // Legge un carattere da tastiera (standard input stdin)
printf("Il carattere inserito è: %c\n", c); // Stampa il carattere letto
return 0;
}
Dunque la funzione getc() è principalmente utilizzata quando si desidera leggere un singolo carattere da un file o da stdin (standard input).
Ecco alcune tipiche situazioni dove può essere utile:
Lettura da file di testo: Quando si desidera leggere un carattere per volta da un file di testo, ad esempio per analizzarne il contenuto o eseguire operazioni specifiche su di esso.
Interazione con l'utente: Per la lettura di input da parte dell'utente da tastiera quando si desidera leggere un solo carattere alla volta. Ad esempio, nei menu a selezione singola o in applicazioni che richiedono un input di carattere singolo.
Analisi dei dati: In alcune situazioni, si potrebbe dover analizzare o elaborare i dati carattere per carattere anziché linea per linea. getc() può essere utile in tali scenari.
In generale, getc() è utilizzata ogni volta che è necessario leggere un singolo carattere, sia da un file che da stdin, ed è utile in una vasta gamma di applicazioni che coinvolgono l'input e l'output di dati di carattere singolo. Ma per la lettura di righe intere di testo, è più conveniente utilizzare altre funzioni come fgets().
getchar()
La funzione getchar() è utilizzata per leggere un singolo carattere dalla tastiera, e corrisponde ad un'applicazione specifica della funzione getc() quando viene passato stdin come argomento. In pratica, getchar() è equivalente a getc(stdin).
Utilizzo:
La funzione getchar() viene utilizzata principalmente quando è necessario leggere un singolo carattere dalla tastiera. Ad esempio, può essere utilizzata per implementare un semplice programma che acquisisce un singolo carattere da tastiera e lo utilizza per prendere decisioni o eseguire azioni.
Esempio:
#include <stdio.h>
int main() {
char c;
printf("Inserisci un carattere: "); // Chiede all'utente di inserire un carattere
c = getchar(); // Legge un carattere da tastiera
printf("Il carattere inserito è: %c\n", c); // Stampa il carattere letto
return 0;
}
In questo esempio, getchar() viene utilizzata per leggere un singolo carattere dalla tastiera e memorizzarlo nella variabile c, che viene poi stampata a schermo.
In sintesi, getchar() è utile quando si desidera leggere un singolo carattere dalla tastiera e si preferisce una sintassi più concisa rispetto a getc(stdin).
Le funzioni di output
Le funzioni di output in C che studieremo sono: printf, putc e putchar.
printf()
La forma sintattica è la seguente:
printf(<StringaDiFormato>,[, <Argomenti>]);
<StringaDiFormato> è una stringa di caratteri che può contenere specificatori di formato.
<Argomenti> sono gli argomenti da stampare nella stringa di formato.
Es: printf("Base: %d", base);
Stampa a video il valore intero della base.
La sequenza di escape
Le sequenze di escape sono dei caratteri che non vengono visualizzati, ma contribuiscono a formattare il testo. Tutte le sequenze di escape iniziano con il carattere di backslash (\) e sono interpretate come un singolo carattere.
Sequenza di escape
Descrizione
\n
nuova riga (new line)
\t
tabulazione (tab)
\a
segnale sonoro (alert)
\f
nuova pagina (form feed)
\r
ritorno a capo della stessa riga
\v
tabulazione verticale
\b
una battuta indietro (backspace)
\\
barra rovesciata (backslash)
\'
apice singolo
\"
doppi apici
\?
punto di domanda
\0
fine stringa
\<CifraOttale>
numero ottale
\<CifraEsadecimale>
numero esadecimale
Esempio
int base = 10;
printf("Base: %d", base);
putc()
La funzione putc() è utilizzata per scrivere un singolo carattere su un file o su un dispositivo di output specificato.
La sintassi è la seguente:
int putc(int char, FILE *stream);
📚 Consigliato per te
50 Algoritmi per imparare C++
Struttura dati, puntatori e algoritmi classici in C++, passo passo.
char: Il carattere da scrivere sul file o sul dispositivo di output.
stream: Il puntatore al file o al dispositivo di output su cui si desidera scrivere il carattere.
Esempio
#include <stdio.h>
int main() {
char c = 'a';
FILE *file_pointer;
// Apre il file "output.txt" in modalità scrittura
file_pointer = fopen("output.txt", "w");
// Verifica se il file è stato aperto correttamente
if (file_pointer != NULL) {
putc(c, file_pointer); // Scrive il carattere 'a' nel file
fclose(file_pointer); // Chiude il file
printf("Il carattere è stato scritto correttamente nel file.\n");
} else {
printf("Impossibile aprire il file.\n"); // Messaggio di errore se il file non può essere aperto
}
return 0;
}
In questo esempio, il carattere 'a' viene scritto nel file "output.txt" utilizzando putc(). Il file viene aperto in modalità scrittura ("w") e il carattere viene scritto utilizzando il puntatore di file file_pointer. Infine, il file viene chiuso con fclose(). Se il file non può essere aperto correttamente, verrà visualizzato un messaggio di errore.
Assicuriamoci di avere i permessi necessari per scrivere sul file e che il percorso specificato sia corretto. Se il file non esiste, verrà creato; se esiste già, il suo contenuto verrà sovrascritto.
putchar()
La funzione putchar() è utilizzata per scrivere un singolo carattere su stdout.
La sintassi è la seguente:
int putchar(int c);
c: rappresenta il carattere da scrivere su stdout.
Funzionamento:
Quando chiamiamo putchar(), il carattere c viene scritto sullo standard output, che è generalmente la console o il terminale in cui il programma è in esecuzione. Il carattere verrà quindi visualizzato sullo schermo.
Esempio
#include <stdio.h>
int main() {
char c = 'a';
putchar(c); // Scrive il carattere 'a' su stdout (generalmente la console)
return 0;
}
In questo esempio, stiamo utilizzando putchar() per scrivere il carattere 'a' su stdout. Quando il programma viene eseguito, il carattere 'a' verrà visualizzato sulla console.
Nota:
putchar() è simile a putc(), ma è progettato specificamente per scrivere un singolo carattere su stdout. Inoltre, restituisce il carattere scritto come un valore intero, o EOF in caso di errore.
La funzione putchar() è utile quando si desidera scrivere un singolo carattere senza dover aprire o chiudere un file. È particolarmente comoda per la stampa di singoli caratteri su stdout, come messaggi di testo, prompt o caratteri di separazione.
Altre funzioni di input/output
Oltre alle funzioni di input e output discusse precedentemente, ci sono molte altre funzioni utili disponibili nel linguaggio C. Ecco alcune di esse:
Funzioni di Input da File:
fgets(): Utilizzata per leggere una riga di testo da un file.
fscanf(): Simile a scanf(), ma legge input da un file anziché dalla tastiera.
Funzioni di Output su File:
fputs(): Utilizzata per scrivere una stringa su un file.
fprintf(): Simile a printf(), ma scrive output su un file anziché su stdout.
Gestione dei File:
fopen(): Utilizzata per aprire un file.
fclose(): Utilizzata per chiudere un file aperto.
feof(): Utilizzata per verificare se è stata raggiunta la fine di un file.
Funzioni di Input/Output Binario:
fread(): Utilizzata per leggere blocchi di dati da un file binario.
fwrite(): Utilizzata per scrivere blocchi di dati in un file binario.
Gestione del Puntatore di File:
ftell(): Utilizzata per ottenere la posizione corrente nel file.
fseek(): Utilizzata per spostare il puntatore di file a una posizione specificata nel file.
Funzioni di Output su Standard Error:
fprintf(stderr, ...): Simile a fprintf(), ma scrive output su stderr, che di solito è associato all'output degli errori anziché alla console.
Queste sono solo alcune delle funzioni più comuni per l'input e l'output in C. Ogni funzione ha le proprie caratteristiche e scopi specifici, e la scelta della funzione da utilizzare dipenderà dalle esigenze del programma e del tipo di dati con cui si sta lavorando.
Conclusioni
In questo articolo abbiamo esaminato le funzioni di input e output in linguaggio C, con un focus su scanf(), getc(), getchar(), putc(), e putchar().
Ecco un breve riassunto di quanto discusso:
Funzioni di Input:
scanf(): Utilizzata per acquisire input dalla tastiera e memorizzarlo in variabili specificate. È necessario specificare il formato di input utilizzando specificatori di formato come %d, %f, %c, ecc.
getc(): Utilizzata per leggere un singolo carattere da un file. Può anche leggere un carattere dalla tastiera.
getchar(): Simile a getc(), ma specificamente utilizzata per leggere un carattere dalla tastiera.
Funzioni di Output:
putc(): Utilizzata per scrivere un singolo carattere su un file o su un dispositivo di output specificato.
putchar(): Simile a putc(), ma specificamente utilizzata per scrivere un singolo carattere su stdout.
Utilizzi Principali:
scanf(), getc(), e getchar() sono utilizzate per l'input da tastiera o da file.
putc() e putchar() sono utilizzate per l'output su file o su dispositivi di output specificati.
Sequenze di Escape:
Abbiamo esaminato alcune sequenze di escape comuni utilizzate per formattare il testo in C, come \n, \t, \b, ecc.
Considerazioni Finali:
È importante utilizzare correttamente le funzioni di input e output in base alle esigenze del programma.
Le sequenze di escape possono essere utili per formattare il testo in modo appropriato.
In sintesi, le funzioni di input e output in C forniscono gli strumenti necessari per acquisire input dall'utente, leggere e scrivere su file, e gestire l'output dei programmi. Con una comprensione chiara di queste funzioni e delle sequenze di escape, è possibile sviluppare applicazioni C più efficaci e flessibili.
N.B.: Assicuriamoci sempre di gestire gli errori in modo appropriato durante l'utilizzo delle funzioni di input e output, controllando il valore restituito dalle funzioni e gestendo situazioni inaspettate in modo adeguato.
Un'email ogni tanto con i nuovi articoli e le guide — niente spam, ti disiscrivi quando vuoi.
🍪 Questo sito usa i cookie
Utilizziamo cookie tecnici necessari al funzionamento e, previo tuo consenso, cookie
analitici e di terze parti per migliorare l'esperienza di navigazione.
Leggi la Cookie Policy e la
Privacy Policy.