Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 36 di 47
  • livello principiante
Indice lezioni

Introduzione Input e Output su file

Le operazioni che gestiscono i comandi da e per i file; lo stream
Le operazioni che gestiscono i comandi da e per i file; lo stream
Link copiato negli appunti

Scrivere su file è forse la parte più importante di questo corso, perché si pongono le basi per salvare i propri lavori e quindi iniziare a strutturare programmi di una certa complessità. Abbiamo già accennato alle operazioni di input/output limitandoci a quelle che coinvolgevano la tastiera come dispositivo di input e lo schermo come dispositivo di output. Per poter operare correttamente è necessario includere l'header file <stdio.h> che contiene tutte funzioni per l'input/output, comprese quelle che operano sui file.

In C le operazioni di I/O vengono semplificate attraverso l'uso degli stream, altro non sono che delle astrazioni rappresentative di un file o di un dispositivo fisico, che vengono manipolate attraverso l'uso di puntatori. L'enorme vantaggio di usare gli stream è quello di potersi riferire ad un identificatore senza preoccuparsi di come questo venga implementato; generalmente le operazioni che si compiono su uno stream sono tre, lo si apre, vi si accede (nel senso di operazioni di lettura e scrittura) e lo si chiude. L'altra importante caratteristica è che lo stream è bufferizzato, ovvero viene riservato un buffer per evitare ritardi o interruzioni nella fase di lettura e scrittura, infatti il contenuto del buffer non viene mandato al dispositivo (che si tratti di un dispositivo fisico o di un file non ha importanza) fino a quando non viene svuotato o chiuso.

Gli stream predefiniti nel linguaggio C (che vengono messi a disposizione includendo la <stdio.h>) sono:

stdin, stdout, stderr

 

Questi stream utilizzano principalmente il testo come metodo di comunicazione I/O, anche se i primi due possono essere usati con i file, con i programmi, con la tastiera, con la consolle e lo schermo, lo stderr può scrivere soltanto su console o sullo schermo. La console è il dispositivo di default per stdout e stderr, mentre per stdin il dispositivo di default è la tastiera.

Linux e l'I/O
Linux (e Unix) permette una serie di operazioni che non fanno parte del linguaggio C, ma del sistema operativo stesso; queste operazioni permettono di gestire l'input o l'output di un programma e di redirigerlo dove meglio si crede.

  • >
    redirige lo stdout, generalmente stampato a video, in un file; ammettiamo di avere un programma di nome "prog", per redirigere il risultato in un file basta fare, da console:
    # prog > risultato.txt
  • <
    redirige il contenuto del file allo stdin; ammettiamo di avere un file di nome "input.txt" e di volerlo passare come input al programma "prog", basta digitare, da console:
    # prog < input.txt
  • | (pipe)
    questo simbolo speciale permette di redirigere lo stdout di un programma allo stdin di un altro programma; supponiamo di avere "prog1" che deve mandare il proprio output a "prog2", da console scriveremo:
    # prog1 | prog2due esempi pratici in linux sono:# prog | lpr
    // manda l'output di "prog" alla stampante# ls -l | more
    // visualizza le directory
    // una schermata per volta

Ti consigliamo anche