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

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

Introduzione al linguaggio C++
Corso di Fondamenti di Programmazione canale E-O
INFORMATICA Altre Istruzioni di I/O
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Gestione dei file Ing. Simona Colucci.
LINGUAGGIO DI PROGRAMMAZIONE C
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Introduzione al linguaggio C
I File di testo in Pascal
PHP e i files Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Operazioni di I/O da console e da file in C standard
SC che operano su file (1)
Anno accademico Input e Output in C. Anno accademico Sommario Input e outputInput e output I flussi di I/O I flussi di I/O Luso.
INFORMATICA I file.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
FILE DATI 16 lunedi 26 luglio giovedi ore 9 Come sappiamo, un file dati è un gruppo di informazioni tra loro correlate, memorizzate in un dispositivo di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 15 Maggio 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2012.
File.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Introduzione agli stream e alle classi
Struttura dei sistemi operativi (panoramica)
INFORMATICA I file. © Piero Demichelis 2 File Per rendere più uniforme possibile il comportamento dei programmi in relazione alla grande varietà dei dispositivi.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Esercizi di riepilogo sul linguaggio C: file, puntatori, liste
1 Gestione dei File Corso di Informatica A Vito Perrone.
File di testo, file binari
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
I File.
GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persi-stenza dei dati) è necessario poterli archi-viare.
File I record.
File ad accesso casuale o random
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Script 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Esercizi su File.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 11 (Deitel) Lelaborazione dei file Sommario Introduzione La gerarchia dei dati 11.3.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
Vettori, indirizzi e puntatori Finora abbiamo usato gli indirizzi nel chiamare  la funzione scanf()  le altre funzioni per riferimento Tuttavia la vera.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Fabio Scotti – Università degli Studi – Laboratorio di programmazione per la sicurezza 1 Lezione 13 e 14 GESTIONE DEI FILE A) Nozioni sulla gestione dei.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
Operatori di incremento e decremento
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Fondamenti di Informatica L- A #include “mylib.h” int leggi(int a[], int dim) { int i=0; while( scanf("%d", a+i) ) { i++; if( i>=dim ) break; } return.
Capitolo 14 Diapositiva 1 Linguaggio C – Guida alla programmazione 2/ed – A. Bellini, A. Guidi Copyright © The McGraw-Hill Companies srl Archiviare.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
11. Gestione dei file Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
11. Gestione dei file Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Files in C++ Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 6 Marzo 2016.
Transcript della presentazione:

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Il salvataggio dei dati  File File e OS File in C 2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE I programmi che abbiamo considerato finora…. Perdono dati di ingresso, risultati intermedi e risultati finali al termine dell’esecuzione  Volatilità delle variabili  Soluzione: file 3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE I file I file sono contenitori di informazioni: sequenze di byte associate ad un nome Ci sono due tipi fondamentali di file:  File Binari: sequenza di byte  File Testuali: sequenza di caratteri, suddivisi in linee terminate da un carattere di newline; ciascun byte è la codifica ASCII di un carattere alfanumerico (alcuni caratteri possono essere caratteri di controllo non printable) Memorizzati in modo permanente in memoria di massa  Necessari come archivio di informazioni persistenti, visto che la memoria di lavoro è invece volatile 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE I file e il sistema operativo Gestiti dal sistema operativo (gestione del file system)  Risolve la corrispondenza tra nome del file e tracce/settori del disco in cui è memorizzato  Invia i comandi al driver del disco (interfaccia di I/O) per leggere da o scrivere su file (trasferimento tra memoria di massa e memoria centrale) Per organizzare in modo conveniente grandi quantità di file, questi sono raccolti in directory (cartelle) 5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Identificazione dei file Possono esistere più file con lo stesso nome, purché abbiano una collocazione diversa nell’albero dei direttori Pathname: descrive tutto il percorso nell’albero dei direttori per raggiungere il file  Il direttorio radice (root) assume il nome dell’unità disco, che nei PC è C:  Es.: il file FILE3 nel direttorio Lisa ha pathname C:\user\lisa\FILE3 I file sono generalmente dotati di attributi  Data e ora di creazione o dell’ultima modifica  Dimensioni espresse in numero di byte Il compito di gestire i file e caricarli nella memoria di lavoro, quando richiesto, è svolto dal sistema operativo 6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File e programmi C In C l’accesso ai file da parte di un programma avviene tramite le funzioni disponibili nella libreria stdio.h Le funzioni di libreria della stdio.h interagiscono con il sistema operativo per consentire l’accesso a file  Al loro interno le funzioni di libreria contengono delle chiamate a funzioni di sistema operativo  Sfruttano la chiamate al sistema operativo (dette primitive) per creare, cancellare, scrivere, leggere da file 7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Uso dei file in ambiente C In ambiente C, per utilizzare un file all’interno di un programma è necessario:  Aprire un “flusso di comunicazione”, cioè aprire il file  Accedere a file in lettura e/o scrittura  Chiudere il “flusso di comunicazione”, cioè chiudere il file Se un file viene aperto in una certa modalità (binario o testuale):  Le operazioni sul file devono essere effettuate in modo congruente, tenendo conto del tipo di file  Se creo un file in formato binario devo leggerlo sempre in formato binario 8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Apertura di un file 1/2 File * fopen(“nome_file”, “modalità”) è la funzione per l’apertura del file  riceve in ingresso il nome del file da aprire e il modo in cui lo si vuole aprire  restituisce il puntatore al descrittore del file creato Alla chiamata della funzione  il sistema operativo crea un nuovo descrittore di file nella tabella dei file aperti  inizializza i campi del descrittore  restituisce il puntatore a tale descrittore. Questo puntatore rappresenta il nome logico del file, associato al nome fisico indicato come parametro della fopen  una volta aperto il file, questo può essere acceduto indicando il solo nome logico 9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Apertura di un file 2/2 In un programma C, un file è rappresentato da un puntatore al descrittore del file Un programma C che utilizza un file deve dichiarare una variabile puntatore, ad esempio:  FILE *fp; Il programma fa riferimento al file (nel suo complesso) tramite tale variabile (fp) #include main() { FILE *fp; fp=fopen(“ordine.txt”, “r”) ……… } 10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Modalità di apertura di un file “r”  sul file sarà possibile eseguire solo operazioni di lettura.  Se il file non esiste, la funzione fopen restituisce il codice di errore NULL “w”  sul file sarà possibile eseguire solo operazioni di scrittura ad inizio file  Se il file non esiste viene automaticamente creato “r+”  sul file sarà possibile eseguire sia operazioni di lettura che di scrittura  Se il file non esiste, la funzione fopen restituisce il codice di errore NULL “w+”  sul file sarà possibile eseguire sia operazioni di lettura che di scrittura.  Se il file non esiste, viene automaticamente creato, in caso contrario il contenuto preesistente del file viene perso (sovrascrittura) “a”  sul file sarà possibile eseguire solo operazioni di scrittura in coda al file.  Se il file non esiste viene automaticamente creato, altrimenti il contenuto preesistente del file non viene perso “rb, wb, rb+, wb+, ab+”  stesso significato di cui sopra ma per file binari 11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Chiusura di un file La chiusura di un file è possibile attaverso la funzione fclose int fclose (FILE *fp) Riceve in ingresso il puntatore del file da chiudere Restituisce  0 se l’operazione è andata a buon fine  !=0 se non è andata a buon fine Alla chiamata,  il sistema operativo chiude il file referenziato dal puntatore  assegna al puntatore il valore NULL  libera l’elemento che conteneva il descrittore del file chiuso 12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un primo esempio 13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Gestione degli errori int feof(FILE *p)  Restituisce !=0 se durante la lettura si incontra EOF 0 se non si è incontrata la fine del file  Accedere ad un file in una zona oltre la fine del file è considerato errore int ferror(FILE *p)  Restituisce !=0 se durante la lettura non si è verificato errore 0 se si è verificato errore 14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Formato dei file e Lettura/scrittura La lettura e la scrittura  devono essere operazioni simmetriche  dipendono dal tipo di file La struttura delle informazioni inserite in un file sono definite da chi crea il file Se il file è testuale i caratteri letti/scritti possono essere soggetti ad interpretazione  Per esempio il carattere ascii 10 indica il comando di “a capo”  Questo carattere non viene letto o scritto ma viene attivato il comando che manda a capo la prossima riga Se il file è binario i caratteri letti/scritti non sono interpretati  Quindi se scrivo il carattere con codice ascii 10 in un file binario viene scritto proprio il carattere con codice 10 15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Accesso Sequenziale Le operazioni di lettura e scrittura accedono al file in modo sequenziale, e mantengono traccia del punto in cui si è arrivati nella scrittura del file Dopo l’apertura, il puntatore è posizionato all’inizio del file, dopo si sposta di un numero di byte pari a quelli che sono stati letti (scritti) e trasferiti in (da) memoria centrale Se l’apertura di un file è in scrittura, in modalità “a” (append), allora dopo l’apertura il puntatore è posizionato a fine file La funzione feof(fp), indica se il file pointer è posizionato a fine file  feof(fp) != 0 se il file pointer è posizionato a fine file  feof(fp) == 0 negli altri casi 16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lettura e scrittura di file testuali 1/2 In un file testuale possono leggere e scrivere  Un carattere per volta ( fgetc, fputc )  Un blocco formattato ( fscanf, fprintf ) int fgetc (FILE *fp)  legge il prossimo carattere dal file specificato come parametro int fputc (int c, FILE *fp)  scrive sul file specificato come parametro il carattere specificato come parametro Esistono anche le funzioni getc e putc  Hanno lo stesso prototipo e sono equivalenti  Hanno una diversa implementazioni 17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lettura e scrittura di file testuali 2/2 int fscanf(FILE *fp, stringa_controllo, variabili)  Ha la stesso effetto della scanf ma legge da file  La scanf è la fscanf in un cui fp punta a stdin int fprintf(FILE *fp, stringa_controllo, variabili)  Ha la stesso effetto della printf ma scrive sul file  La printf è la fprintf in un cui fp punta a stdout Tutte queste funzioni restituiscono EOF in caso di errore 18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Creiamo e scriviamo su un file 19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lettura e scrittura di blocchi di byte int fread (void *punt, dim_blocco, num_blocchi, FILE *fp)  Legge dal file fp un numero di byte pari a dim_blocco*num_blocchi e li memorizza nell’area di memoria puntata da punt  Restituisce il numero di byte letti int fwrite (void *punt, dim_blocco, num_blocchi, FILE *fp)  Scrive sul file fp un numero di byte pari a dim_blocco*num_blocchi letti dall’ area di memoria puntata da punt  Restituisce il numero di byte scritti 20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Accesso diretto ad un byte specifico long int ftell(FILE *fp)  Restituisce il valore dell’indicatore di posizione del prossimo byte a cui si può accedere int fseek (FILE *fp, long offset,int refpoint)  Sposta l’indicatore di posizione del prossimo byte a cui accedere del valore di offset (positivo o negativo) a partire da refpoint  Restituisce 0 se l’operazione è possibile rewind(FILE *fp)  sposta l’indicatore di posizione all’inizio del file 21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Scriviamo con fpritnf e manipoliamo un file 22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Flussi di comunicazione standard I file in realtà sono già stati utilizzati dalla prima lezioe All’inizio dell’esecuzione di un programma C vengono automaticamente aperti 3 flussi di comunicazione standard rappresentati da 3 variabili implicite di tipo puntatore a FILE  stdin: associato al file che rappresenta il dispositivo di ingresso standard (tastiera)  stdout: associato al file che rappresenta il dispositivo di uscita standard (video)  stderr: associato al file che rappresenta il dispositivo di uscita standard (video) printf scrive sul file a cui fa riferimento il puntatore stdout scanf legge dal file cui fa riferimento stdin 23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampiamo a video… 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Legge e mostra a video un file di testo 25 La funzione putchar() scrive il carattere c su stdout.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lettura sequenziale di un file #include main(){ int account; char name[ 30 ]; double balance; FILE *cfPtr; /* cfPtr = clients.dat file pointer */ cfPtr = fopen( "clients.dat", "r" ); if ( cfPtr == NULL ) printf( "File could not be opened\n" ); else { printf( "%-15s %-15s %s\n", "Account", "Name", "Balance" ); fscanf( cfPtr, "%d%s%lf", &account, name, &balance ); while ( !feof( cfPtr ) ) { printf( "%-15d%-15s%7.2f\n", account, name, balance ); fscanf( cfPtr, "%d%s%lf", &account, name, &balance ); } fclose( cfPtr ); } 26 Clients.dat

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio  Credits  Gianluca Palermo