Gestione dei file in C

Documenti analoghi
Gestione dei file in C

La gestione dei file in C

I files in C. A cura del prof. Ghezzi

Gestione dei File. Credits Prof. Campi

Gestione dei File. Indice. Il file system in C. Principali operazioni sui file (dalla Standard Library) Esempi. Corso di Informatica A.

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

I file. un file è una sorgente/destinazione di dati per diversi attori

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Laboratorio di Programmazione

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

Linguaggio C: i file

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

A. Ferrari. File. in C

Il linguaggio C. Breve panoramica su stdio.h

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

GESTIONE DEI FILE IN C

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Operazioni su file di caratteri

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Streams e disk files

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2)

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA SIENA UFF

Informatica (A-K) 23. Linguaggio C -8

Gestione dei File. dischi nastri cd

Introduzione al C. Stream e disk file

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

Linguaggio C Gestione File

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Files in C endofile

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto

File binari e file di testo

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa.

Input/output console file caratteri stringhe formattato ascii binari

Esercizi. I File ed il C

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Gestione dei File in C

ELEMENTI DI INFORMATICA. Linguaggio C

Informatica B Allievi Meccanici con cognome da Cl a L II prova intermedia del 13/02/01 Prof. Elisabetta Di Nitto

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!

Fondamenti di Informatica

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

INFORMATICA. I file. File. File. File

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Lezione 15. Introduzione

File e puntatori a file

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Capitolo 5 -- Stevens

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

GESTIONE DEI FILE. File come tipo di dati

Capitolo 11 Elaborazione di file

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Fondamenti di Informatica L-A

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd

I File. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centarle.

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..

Prof. G. Ascia. Gestione dei File C

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Il linguaggio C I file

Scrittura formattata - printf

Introduzione al C. Unità 9 File

Gestione dei File C. Generalità

file fisico file logico

Gestione dei File C. Generalità

Gestione File di testo

Cosa serve per cominciare?

I File. File. File di testo. Esempi di file di testo. Gestione di file in C. Gestione di file in C

Lab 10 Gestione file di testo

Input/Output su File

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n').

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Lezione 22: Input/Output e Files

Input/Output su disco

Gestione dei file. File di testo e binari

caratteri, immagini, suoni, ecc.

Gestione dei file in C

Dispensa 25 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN SCIENZE E TECNOLOGIE INFORMATICHE CESENA. Laboratorio

INPUT/OUTPUT INPUT/OUTPUT

File. Titolo presentazione sottotitolo. Federico Reghenzani

Gestione dei files in linguaggio C. Un progetto completo

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1.

Corso di Informatica A.A

Il linguaggio C I file. mylib.h contribuenti.txt. #include <stdio.h> #define N 25 Paolucci,Enrico, 24000,23.0. fornitori.dat

Transcript:

Gestione dei file in C Fondamenti di Informatica

Che cos è un file e a cosa serve?

Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente presente in un calcolatore. q Si differenzia dalla memoria centrale nei seguenti aspetti: dimensioni e costo persistenza prestazioni q I file sono lo strumento che consente di memorizzare delle informazioni nella memoria di massa del calcolatore.

File come flussi q Un flusso (stream) di dati è un meccanismo i cui principali usi sono: lo scambio di dati con le periferiche (es. terminale, stampanti, etc.); lettura e scrittura dei dati memorizzati sul disco fisso. q In C i file sono quindi rappresentati come flussi e vengono fornite diverse funzionalità nella libreria stdio.h per la loro gestione: il flusso di informazione può essere testuale (flusso di caratteri) o binario (flusso di byte); consente di avere file ad accesso sequenziale e ad accesso diretto (o casuale).

Lavorare con i file in C

Apertura e chiusura di un file q Per poter utilizzare un file in un programma C è prima necessario aprirlo: FILE *fopen(nomefile, modalità) nomefile è il nome del file da aprire (incluso il path) modalità è una stringa che serve a specificare come verrà utilizzato il file la funzione ritorna un puntatore di tipo FILE, una particolare struttura dati che consente di tenere traccia dell ultima posizione letta/scritta nel file, del suo stato, etc; se l operazione non ha successo, viene ritornato NULL.

Apertura e chiusura di un file (2) q Modalità di apertura di un file: Modalità r w a rb wb ab r+ w+ rb+ wb+ Significato Apre un file testuale in lettura Crea un file testuale in scrittura Apre o crea un file testuale e si posiziona alla fine del file Apre un file binario in lettura Crea un file binario in scrittura Apre o crea un file binario e si posiziona alla fine del file Apre un file testuale in lettura/scrittura Crea un file testuale in lettura/scrittura Apre un file binario in lettura/scrittura Crea un file binario in lettura/scrittura

Apertura e chiusura di un file (3) q Una volta utilizzato un file in un programma, è necessario chiuderlo: int fclose(file *fp) fp è il puntatore al file da chiudere la funzione ritorna 0 se l operazione viene eseguita correttamente, altrimenti la funzione restituisce un valore speciale EOF definito in stdio.h (che viene generalmente utilizzato come carattere terminatore di un file).

Operazioni di lettura e scrittura q Le operazioni di lettura e scrittura su file possono essere effettuate in quattro modi diversi: precisando il formato dei dati in ingresso e in uscita accedendo ai dati carattere per carattere linea per linea blocco per blocco q Generalmente si adotta l accesso linea per linea nel caso di flussi di testo e l accesso carattere per carattere o blocco per blocco in presenza di flussi binari

Lettura e scrittura formattata q Le funzioni fprintf e fscanf consentono operazioni formattate analoghe a quelle di scanf e printf q Restituiscono il numero degli elementi effettivamente letti o stampati o restituiscono un numero negativo in caso di errore int fprintf(fp, str_controllo, ) int fscanf(fp, str_controllo, ) fp è il puntatore al file dal quale leggere o dove scrivere, gli argomenti successivi sono analoghi a quelli usati con scanf e printf le funzioni restituiscono l effettivo numero di elementi letti (fscanf) o di caratteri scritti (fprintf)

Lettura e scrittura di caratteri q Lettura di un carattere int fgetc (FILE *fp) riceve come argomento il file da cui leggere restituisce il codice del carattere letto o EOF in caso di errore q Scrittura di un carattere int fputc (int c, FILE *fp) riceve come argomenti il codice del carattere da scrivere e il file su cui scrivere restituisce il codice del carattere scritto o EOF in caso di errore

Esempio #include <stdio.h> int main() { } FILE *fp; char c; if ((fp = fopen( car.txt", "r"))!= NULL) { } while ((c = fgetc(fp))!= EOF) printf( ***%c***\n,c); fclose(fp); else printf("il file non può essere aperto\n"); return 0;

Lettura e scrittura di stringhe q Lettura di una stringa char *fgets (char *s, int n, FILE *fp) legge dal file puntato da fp fino a n-1 caratteri (si interrompe nel caso raggiunga prima il carattere \n o la fine del file) e mette i caratteri letti nella stringa s (aggiungendo il carattere terminatore \0); La funzione restituisce l indirizzo di s se ha successo o NULL in caso di errore. q Scrittura di una stringa int fputs (char *s, FILE *fp) scrive nel file puntato da fp il contenuto della stringa s (fino a raggiungere il carattere terminatore \0); restituisce 0 in caso l operazione abbia avuto successo.

Esempio #include <stdio.h> #include <strings.h> #define MAXLINE 1000 int copiaselettiva(char refstr[], char in[], char out[]) { char line[maxline]; FILE *fin, *fout; } if ((fin = fopen(in, "r")) == NULL) return -1; if ((fout = fopen(out, "w")) == NULL) { fclose(fin); return -1; } while (fgets(line,maxline,fin)!= NULL) if (strstr (line,refstr)!= NULL) fputs(line,fout); fclose(fin); fclose(fout); return 0;

Operazioni di gestione degli errori q int ferror(file *fp) Controlla se è stato commesso un errore nella precedente operazione di lettura o scrittura Restituisce 0 se nessun errore è stato commesso, un valore diverso da 0 in caso contrario q int feof(file *fp) Controlla se è stata raggiunta la fine del file nella precedente operazione di lettura o scrittura Restituisce 0 se la condizione di fine file non è stata raggiunta, un valore diverso da 0 in caso contrario

Lettura e scrittura per blocchi q int fread(ptr, dim, num, FILE *fp) legge al più num*dim byte di dati binari o testuali dal file cui fa riferimento fp e li memorizza nel vettore identificato da ptr (la lettura termina prima se viene raggiunta la fine del file o si verifica un errore); la funzione ritorna il numero di elementi effettivamente letti. q int fwrite(ptr, dim, num, FILE *fp) scrive num*dim byte di dati binari o testuali sul file cui fa riferimento fp prelevandoli dal vettore identificato da ptr; la funzione ritorna il numero di elementi effettivamente scritti.

Esempio typedef struct { float x; float y; } punto; int carica(file *fp, punto p[]) { int n=0; while (!feof(fp)) { if (fread(&p[n],sizeof(punto),1,fp)==1) n++; else break; } return n; }

Accesso diretto q Spostare l indicatore di posizione corrente di un file: int fseek(file *fp, long offset, int refpoint) Lo spostamento offset (in byte) può essere positivo o negativo e si riferisce a refpoint; refpoint può assumere tre diversi valori SEEK_SET indica l inizio del file SEEK_CUR indica la posizione corrente SEEK_END indica la fine del file la funzione fseek restituisce zero se l operazione ha avuto successo q Riavvolgere un file rewind(file *fp) equivale a fseek con offset=0 e refpoint=seek_set q long ftell(file *fp) restituisce il valore corrente dell indicatore di posizione del file specificato: pari al numero di byte dall inizio del file nel caso di un file binario, mentre un valore dipendente dal sistema per i file testuali

File e sistema operativo

File e programmi C q Per utilizzare un file in C è necessario prima aprire un flusso di comunicazione per associare il programma al file. q Il sistema operativo tiene traccia di tutti i file aperti da ogni programma nella tabella dei file aperti. q Per ogni file aperto, si tiene traccia di: modalità di utilizzo del file (lettura, scrittura, o lettura e scrittura); posizione corrente sul file (punta al prossimo byte da leggere o scrivere); indicatore di errore; indicatore di end-of-file (eof). q Una volta finito di utilizzare un file in un programma, è possibile chiuderlo.

Tabella file aperti e flussi standard q Per ogni programma, il sistema operativo tiene aggiornata una tabella dei file aperti. q I puntatori FILE restituiti dalla fopen, sono dei riferimenti alla tabella dei file aperti. q Tre flussi standard vengono automaticamente aperti quando inizia l esecuzione di un programma: stdin, stdout, e stderr. q Normalmente questi tre flussi rappresentano: il video del terminale (stdout e stderr); la tastiera del terminale (stdin). q printf e scanf utilizzano questi flussi standard.

File e sistema operativo Variabili puntatore stdin stdout stderr f1 f2 f3 Tabella dei file aperti nomefile: modouso: poscorr:. nomefile: modouso: poscorr:. nomefile: modouso: poscorr:. nomefile: FileTre modouso: poscorr:. nomefile: FileUno modouso: poscorr:. nomefile: FileDue modouso: poscorr:. File StandardInput StandardInput StandardError FileUno FileDue FileTre