Programmazione.html.it

  Home page

   Guida Base

   Guida al Java

   Guida al C

   Guida al C++

   Guida al Delphi

   Guida a VB .NET

   Guida al Visual Basic

   Guida al Python

   Guida al'UML

  Forum di discussione
  HTML.it


Guida al linguaggio C
  LEZIONE:  Introduzione Input e Output su file


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 | prog2

    due esempi pratici in linux sono:

    # prog | lpr
    // manda l'output di "prog" alla stampante

    # ls -l | more
    // visualizza le directory
    // una schermata per volta



Torna a inizio pagina