• Non ci sono risultati.

Università degli Studi di Udine

N/A
N/A
Protected

Academic year: 2021

Condividi "Università degli Studi di Udine"

Copied!
15
0
0

Testo completo

(1)

FONDAMENTI DI INFORMATICA

Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI

Facoltà di Ingegneria

Università degli Studi di Udine

Linguaggio C

I file

(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.

(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.

(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

(5)

File ASCII sequenziali

disco

dati EOF

lettura/scrittura File Control

Block

(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

(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

(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

(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);

}

alla chiusura del file

(10)

Chiusura di file ASCII sequenziale

#include <stdio.h>

#include <stdlib.h>

...

FILE *fp;

...

fclose (fp);

(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);

(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)

...

(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

(14)

File binari

• open

• read

• write

• Trasferiscono i dati, a blocchi, in aree di

memoria (vettori)

(15)

Accesso casuale

• ftell

• fseek

• Permettono di memorizzare un indirizzo

all’interno del file, e poi di ritornarci per

riprendere da lì la lettura o la scrittura

Riferimenti

Documenti correlati

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

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

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

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

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

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

In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide. In ogni caso questa nota di copyright non deve mai essere rimossa e deve essere

In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.. Nota