Istruzioni di entrata ed uscita (input/output o I/O)

Tutti i linguaggi di programmazione per gestire l'input-output dei dati utilizzano un'idea astratta di periferica che riassume le caratteristiche fondamentali di ogni tipo di periferica (come schermo, stampante, tastiera, dischetto, ...), indicata di solito con il nome FILE.

Un file può essere pensato come una sequenza ordinata di lunghezza qualsiasi di valori tutti di uno stesso tipo; pertanto può anche essere vuoto (nessun elemento).
Inoltre esiste una testina di scrittura/lettura astratta posizionata in un punto della sequenza.

Ogni linguaggio di programmazione permette di dichiarare in un programma quali file si useranno, definendo un nome simbolico per identificarli, il tipo dei loro valori, e associandoli a delle periferiche.

Inoltre sono sempre dichiarati implicitamente due file speciali per l'input e l'output standard (connessi alle periferiche tastiera e stampante o schermo), e i loro nomi possono essere dimenticati nelle istruzioni di entrata ed uscita.
In questa prima parte di introduzione alla programmazione consideriamo solo l'uso di questi file standard.

Il C ammette solo l'uso di file di caratteri, mentre, ad esempio, in Pascal è possibile avere file di ogni tipo.

Le istruzioni elementari di I/O del C sono

putchar
putchar(c); scrive sul file di output standard il carattere corrispondente al valore dell'espressione c

getchar
(precisamente getchar() è un'espressione); l'istruzione di assegnazione cx = getchar(); corrisponde a leggere il prossimo carattere dal file di input standard e ad assegnarlo alla variabile cx.
Se il file è vuoto (non ci sono più caratteri) allora getchar() ritorna un valore speciale EOF (End Of File).

All'inizio dell'esecuzione del programma i file standard di input/output sono pronti per la lettura/scrittura a partire dall'inizio del file.

Controllo di file vuoto.
Ogni linguaggio permette di controllare se un file è vuoto (o meglio siamo arrivati alla fine durante la lettura).
Nel caso del C se si legge un file vuoto (alla fine) la funzione getchar ritorna un valore speciale, indicato da EOF (End Of File).

Le due istruzioni viste sopra sono sufficienti per leggere e scrivere ogni cosa, ma sono piuttosto elementari, così il C (come gli altri linguaggi) offre anche altre istruzioni.

printf
printf("stringa") stampa tutti i caratteri che compongono stringa uno dopo l'altro; si ricorda che stringa è semplicemente una sequenza di caratteri.
Può anche stampare valori di altri tipi usandola come segue printf(" ...%info ...", e) dove info è d (per decimale) o f (per float) ed e un'espressione del tipo corrispondente. In questo caso %info sarà rimpiazzata da una stringa che rappresenta il valore di e.
scanf
scanf("%info", &x) legge la prossima sequenza di caratteri sullo standard input che rappresentano un valore di tipo info e assegna tale valore alla variabile x; occorre premettere al nome della variabile &. Il significato di tale simbolo sarà chiarito in seguito nella parte sui puntatori).
Per utilizzare le istruzioni di input\output in C occorre premettere al programma la dicitura
#include <stdio.h>
così lo schema di programma elementare avrà forma
#include <stdio.h>

main()
{   
     DECLARATIONS
     STATEMENTS
}