1 Fondamenti di Informatica
© 2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2)
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 1
FONDAMENTI DI INFORMATICA
Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI
Facoltà di Ingegneria Università degli Studi di Udine
Linguaggio C I file
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e Ing. Davide Pierattoni, Università degli Studi di Udine.
Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.
Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori.
L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. Gli autori non assumono alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).
In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.
In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.
Nota di Copyright
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 3
I file
• Strutture per l’organizzazione della memorizzazione dei dati nella memoria di massa
• Diversi tipi: accesso casuale, accesso sequenziale, binari, ASCII, a record, ecc.
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 4
I file in C
• Contenuto: binario o ASCII
• Accesso: sequenziale (stream) – consentono lettura/scrittura soltanto in
sequenza, dall’inizio alla fine – 2 applicazioni: file su disco/nastro,
dispositivi di I/O (tastiera, monitor) – nei file su disco con apposite funzioni si
può “saltare” direttamente in un punto qualsiasi del file
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 5
File ASCII sequenziali
disco
dati EOF
lettura/scrittura File Control
Block
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 6
File ASCII sequenziali
• Struttura dati per gestire il file:
#include <stdio.h>
FILE *fp;
• Operazioni sul file:
– apertura – chiusura
– lettura/scrittura dati
– controllo “End Of File” (EOF)
puntatore a struttura FILE
2 Fondamenti di Informatica
© 2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2)
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 7
Apertura di file ASCII sequenziale
• Apertura in lettura:
#include <stdio.h>
#include <stdlib.h>
...
FILE *fp;
if ((fp = fopen ("dati.txt", "r"))== NULL) {
printf ("errore di apertura del file");
exit (EXIT_FAILURE);
}
nome del file modo = read
se il file non esiste, restituisce NULL
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 8
Apertura di file ASCII sequenziale
• Apertura in scrittura:
#include <stdio.h>
#include <stdlib.h>
...
FILE *fp;
if ((fp = fopen ("dati.txt", "w"))== NULL) {
printf ("errore di apertura del file");
exit (EXIT_FAILURE);
}
nome del file modo = write
se il file esiste, lo cancella e ne crea uno nuovo;
se non c’è spazio disponibile restituisce NULL
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 9
Apertura di file ASCII sequenziale
• Apertura in modalità “append”:
#include <stdio.h>
#include <stdlib.h>
...
FILE *fp;
if ((fp = fopen ("dati.txt", "a"))== NULL) {
printf ("errore di apertura del file");
exit (EXIT_FAILURE);
}
dati già presenti prossime scritture EOF alla chiusura del file
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 10
Chiusura di file ASCII sequenziale
#include <stdio.h>
#include <stdlib.h>
...
FILE *fp;
...
fclose (fp);
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 11
Operazioni su file ASCII sequenziali Lettura
int fgetc (FILE *fp);
int fgets (char *s, int nmax, FILE *fp);
int fscanf (FILE *fp, char *format, ...);
Scrittura
int fputc (int ch, FILE *fp);
int fputs (char *s, FILE *fp);
int fprintf (FILE *fp, char *format, ...);
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 12
Controllo di EOF
• Funzione feof:
while (!feof (fp)) ...
• Valori di ritorno delle funzioni di lettura:
while ((ch = fgetc(fp)) != EOF) ...
while (fgets (s, nmax, fp) != NULL) ...
while (fscanf (fp, "%d", &n) != EOF)
...
3 Fondamenti di Informatica
© 2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2)
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 13
File speciali
• stdin: standard input (la tastiera)
• stdout: standard output (il monitor)
• stderr: standard error (spesso ancora il monitor)
• Sono predefiniti e non è necessario né dichiararli né aprirli
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 14
File binari
• open
• read
• write
• Trasferiscono i dati, a blocchi, in aree di memoria (vettori)
Fondamenti di Informatica - Linguaggio C - I file
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere la nota di copyright a pag.2) 15