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

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

File binari e file di testo

Operazioni su file di caratteri

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

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

Linguaggio C: i file

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

Introduzione al C. Stream e disk file

I files in C. A cura del prof. Ghezzi

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

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

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

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

Gestione dei File. dischi nastri cd

file fisico file logico

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

Gestione dei File C. Generalità

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

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

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

GESTIONE DEI FILE IN C

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

Capitolo 5 -- Stevens

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

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

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

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

File e puntatori a file

Linguaggio C Gestione File

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

Gestione dei File in C

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

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

GESTIONE DEI FILE IL CONCETTO DI FILE APERTURA E CHIUSURA DI UN FILE OPERARE SUI FILE

GESTIONE DEI FILE persistenza archiviare file astrazione fornita dal sistema operativo dimensione potenzialmente illimitata ad accesso sequenziale

Introduzione al Linguaggio C

La gestione dei file in C

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file

Struttura dati FILE. Motivazioni: memorie a confronto

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale.

Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++

Laboratorio di Sistemi Operativi primavera 2009

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Matrici, stringhe e I/O da file

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Esercizi. I File ed il C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Fondamenti di Informatica T. Linguaggio C: File

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

GESTIONE DEI FILE IL CONCETTO DI FILE

Gestione di files Motivazioni

LP1 Lezione 13: i File in C. Maurizio Tucci

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Caratteri e stringhe

Fondamenti di Informatica

Gestione dei file. File di testo e binari

I/O in linguaggio C. I/O di caratteri e stringhe

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Valutazione di espressioni

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

Scrittura formattata - printf

Sulla libreria standard, III. Manipolare file con stdio.h

Le funzioni, e le istruzioni di input/output

caratteri, immagini, suoni, ecc.

Corso di Laurea in Ingegneria Meccanica A-K. Fondamenti di Informatica A. A Gestione dei File. A.Pinto

Input/Output. Console e File.

FILE BINARI FILE BINARI

Esercizi File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

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

Capitolo 11 Elaborazione di file

Input/Output di numeri

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Input/output in C e in C++

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

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

puntatori Lab. Calc. AA 2007/08 1

Corso sul linguaggio Java

STRINGHE: ARRAY DI CARATTERI! a p e \0

Scope (visibilità) Scope di un identificatore

Stringhe e allocazione dinamica della memoria

Gestione dei file di dati

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Laboratorio di Algoritmi e Strutture Dati

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Lab 10 Gestione file di testo

Una testina di lettura/scrittura (ideale) indica in ogni istante il record corrente:

int ninv; /* numero di inventario */

C: panoramica. Violetta Lonati

Lezione 25: File Mercoledì 18 Novembre 2009

ingresso/uscita da file

Linguaggio C: Stringhe di caratteri e File

per leggere caratteri: getchar(void); Laboratorio di linguaggi

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Esercizio 1 (15 punti)

Transcript:

Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi destinazione per i risultati in uscita tastiera video file su disco, CD, DVD, memorie flash dispositivi di comunicazione (porte di rete, stampanti, ecc... ) La libreria stdio.h tratta tutti gli stream allo stesso modo (per quanto possibile) rappresentandoli con puntatori a file (FILE *) su cui operano funzioni simili o identiche Stefano Ferrari Programmazione a.a. 2016/17 1

Gli stream standard Esistono tre stream standard, che non occorre definire, aprire e chiudere lo standard input (stdin), ovvero la tastiera lo standard output (stdout), ovvero il video lo standard error (stderr), ovvero il video Quando si chiama un programma, il sistema operativo può reindirizzare gli stream standard, cioè modificarne il significato programma < nomefile indica che si ricevono i dati dal file nomefile anziché da tastiera (stdin punta il file nomefile) programma > nomefile indica che si stampano i risultati sul file nomefile anziché a video (stdout punta il file nomefile) programma 2> nomefile indica che si stampano i messaggi di errore sul file nomefile anziché a video (stderr punta il file nomefile) File di testo e binari Vi sono due tipi di file file di testo, costituiti da sequenze di caratteri: sono accessibili all utente con un editor di testo file binari, costituiti da sequenze di byte: occupano meno spazio per rappresentare numeri I file di testo sono organizzati in righe, separate da appositi caratteri, che sono specifici di ogni sistema operativo il C gestisce la differenza automaticamente (è sempre \n ) Nel seguito considereremo solo i file di testo Stefano Ferrari Programmazione a.a. 2016/17 2

Apertura di un file (1) Per usare un file occorre aprirlo specificando FILE *fopen(char *nomefile, char *modo) il nome del file da aprire e la posizione su disco (path) il modo in cui usarlo r : in lettura, ponendosi al principio del file w : in scrittura, ponendosi al principio del file a : in accodamento, ponendosi alla fine del file Per i file binari si usano rb, wb e ab Il path può essere assoluto o relativo (al file eseguibile o al progetto) Apertura di un file (2) La funzione fopen restituisce un puntatore al file per poterlo usare se il file non esiste in lettura, restituisce NULL in scrittura e accodamento, ne crea uno vuoto se il file non può essere aperto o creato restituisce NULL Aperto un file, la posizione accessibile è il principio del file se si è aperto il file in lettura o scrittura la fine del file se si è aperto il file in accodamento Stefano Ferrari Programmazione a.a. 2016/17 3

Chiusura di un file Dopo l uso, il file va chiuso con l istruzione che restituisce 0 se la chiusura ha successo int fclose(file *stream) la costante simbolica EOF altrimenti Si possono usare puntatori diversi per lo stesso file al fine di scorrerlo in maniera differenziata (non ha senso farlo in scrittura) La funzione void rewind(file* stream ) riporta la posizione corrente al principio del file Parsing di stream Tutti gli stream di ingresso sono gestiti allo stesso modo int fscanf(file *stream, char *formato,...) interpreta il contenuto dello stream in base alla stringa di formato assegna gli oggetti riconosciuti ai puntatori che seguono restituisce il numero di oggetti assegnati Esempio: FILE *fp; int giorno, mese, anno; fp = fopen( prova.txt, r ); fscanf(fp, %d/%d/%d, &giorno, &mese, &anno); Stefano Ferrari Programmazione a.a. 2016/17 4

Terminazione di un file Se si arriva al termine di un file la funzione fscanf restituisce il numero di oggetti assegnati se non ne ha assegnati, restituisce la costante simbolica EOF int fscanf(file *stream, char *formato,...) N.B.: fscanf restituisce EOF se si trova esattamente al termine, non se il file termina durante il parsing Dopo il fallimento di un operazione di lettura la funzione feof restituisce vero, cioè un valore intero non nullo int feof(file *stream) Lettura di righe char *fgets(char *s, int n, FILE *stream) legge una riga di testo dallo stream cioè tutto il testo fino al primo \n incluso si ferma dopo al massimo n caratteri (meno se compare \n ) assegna quanto letto alla stringa s se fallisce restituisce NULL, altrimenti la stringa s char *gets(char *s) opera sullo stream stdin non specifica la lunghezza n legge \n, ma non lo include in s Stefano Ferrari Programmazione a.a. 2016/17 5

Scrittura su file int fprintf(file *stream, char *formato,...) funziona esattamente come printf e sprintf: scrive sullo stream nel formato specificato dalla relativa stringa il valore degli oggetti che seguono int *fputs(char *s, FILE *stream) scrive la stringa s sullo stream di uscita senza aggiungere \n int *puts(char *s) scrive la stringa s sullo stdout con un \n aggiuntivo Restituiscono EOF se falliscono, un valore non negativo altrimenti Buffering L accesso ai file non viene eseguito ad ogni operazione (è troppo lento) si leggono i dati da file un blocco per volta e si conserva il blocco in un area di memoria dedicata (buffer di lettura) si accodano i risultati in un area di memoria dedicata (buffer di scrittura) e si salvano su file quando essa è piena La funzione Il meccanismo di buffering è automatico int fflush (FILE* stream) svuota completamente il buffer associato al file stream Se stream vale NULL, svuota i buffer associati a tutti i file Stefano Ferrari Programmazione a.a. 2016/17 6