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

Documenti analoghi
La gestione dei file in C

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

Gestione dei file in C

A. Ferrari. File. in C

I files in C. A cura del prof. Ghezzi

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

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

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

Gestione dei File in C

Il linguaggio C. Breve panoramica su stdio.h

Linguaggio C Gestione File

Gestione dei File. dischi nastri cd

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

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

Esercizi. I File ed il C

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

Linguaggio C: i file

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

Operazioni su file di caratteri

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

Gestione dei file. File di testo e binari

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

Introduzione al C. Stream e disk file

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

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

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

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

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

File binari e file di testo

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

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES

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

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

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di riepilogo

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

Fondamenti di Informatica T. Linguaggio C: File

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Capitolo 11 Elaborazione di file

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

Capitolo 5 -- Stevens

caratteri, immagini, suoni, ecc.

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

LP1 Lezione 13: i File in C. Maurizio Tucci

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

Struttura dati FILE. Motivazioni: memorie a confronto

Scrittura formattata - printf

Esercitazione n. 6. Gestione dei file e ricorsione

Fondamenti di Informatica

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

Matrici, stringhe e I/O da file

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

file fisico file logico

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

Laboratorio di Sistemi Operativi primavera 2009

FILE BINARI. I file di testo non sono indispensabili: sono semplicemente comodi!

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

Sono file di caratteri, organizzati in linee. Ogni linea è terminata da un marcatore di fine linea (newline, carattere \n ).

Fondamenti di Informatica L-A

Programmazione C Massimo Callisto De Donato

Linguaggio C La libreria standard

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

Gestione dei File C. Generalità

File binari, Operazioni sui File binari, Allocazione dinamica della memoria

Lab 10 Gestione file di testo

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Struttura dati FILE. Concetto di FILE

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

Strutture dati e realizzazione in C. Componenti software:

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

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Sono file di caratteri, organizzati in linee. Ogni linea è terminata da un marcatore di fine linea (newline, carattere '\n').

File e puntatori a file

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

Esercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione

Fondamenti di Informatica. Tecniche di input/output per l'accesso ai file

Gestione dei File C II Parte

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

int ninv; /* numero di inventario */

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

Informatica 1. Prova di recupero 21 Settembre 2001

È un astrazione t i fornita dal sistema operativo, per consentire la memorizzazione di informazioni su memoria di massa È un astrazione di

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Prefissi (modificatori). signed, unsigned, short, long. Dichiarazione delle variabili. <tipo> <nome>; Es:

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00

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

FILE BINARI FILE BINARI

Esercizio 1 (15 punti)

dott. Sabrina Senatore

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

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

LA LIBRERIA STANDARD DEL C

Esercizio 1 (15 punti)

Esercitazione 11. Liste semplici

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Esercizi di programmazione in linguaggio C English Dictionary

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

Esercizi. Codifica file di testo

Transcript:

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

Il file system in C Flusso di comunicazione: binario (sequenza di byte) di tipo testo (sequenza di caratteri) Modalità di utilizzo: Lettura, scrittura o lettura e scrittura; Posizione corrente: Punta al prossimo byte da leggere o scrivere sul file; Indicatore di errore; Indicatore di end-of-file (eof). 3 Variabili puntatore stdin stdout stderr f1 f2 f3 Tabella file aperti Tabella dei file aperti nomefile:. nomefile:. nomefile:. nomefile: FileTre. nomefile: FileUno. nomefile: FileDue. File StandardInput StandardInput StandardError FileUno FileDue FileTre 4

Operazioni di gestione dei file FILE *fopen (nomefile, modalità) int fclose (FILE *fp) int remove (nomefile) int rename (vecchionome, nuovonome) int ferror (FILE *fp) int feof (FILE *fp) void clearerr (FILE *fp) 5 Operazioni di lettura/scrittura int fprintf (FILE *fp, stringa di controllo, elementi) int fscanf (FILE *fp, stringa di controllo, indirizzo elementi) int getchar (void) int putchar (int c) int fgetc (FILE *fp) int fputc (int c, FILE *fp) 6

Esempi con file di testo (1) /*Legge e mostra sul video il contenuto del file di testo filechar*/ #include <stdio.h> /* Contiene la definizione di EOF, del tipo FILE e le testate delle funzioni che operano su file */ #include <stddef.h> /* Contiene la definizione di NULL */ main() FILE *fp; char c; if ((fp = fopen("filechar", "r"))!= NULL) /* Il file viene aperto in lettura con modalità testo */ while ((c = fgetc(fp))!= EOF) /* Viene letto e stampato un carattere per volta sino a fine file */ putchar(c); fclose(fp); else printf("il file non può essere aperto\n"); 7 Esempi con file di testo (2) #include <stdio.h> #include <stddef.h> #include <string.h> #define OK 1 #define ERROR 0 #define MAXLINE 100 int copiaselettiva(char refstr[]) char line[maxline]; FILE *fin, *fout; /*Lettura e scrittura di stringhe (1)*/ If ((fin = fopen("filein", "r")) == NULL) /* filein viene aperto in lettura con modalità testo */ return ERROR; if ((fout = fopen("fileout", "w")) == NULL) /* fileout viene aperto in scrittura con modalità testo */ fclose(fin); return ERROR; 8

Esempi con file di testo (3) /*Lettura e scrittura di stringhe (2)*/ while (fgets(line,maxline,fin)!= NULL) /* fgets legge da filein al più MAXLINE 1 caratteri e assegna al vettore line i caratteri letti, incluso l'eventuale carattere di newline, e termina la stringa con il carattere \0 */ if (strstr (line,refstr)!= NULL) /* La funzione strstr restituisce la posizione della prima occorrenza della stringa puntata da refstr nella stringa puntata da line; se la seconda stringa non è contenuta nella prima viene restituito il valore NULL */ fputs(line,fout); fclose(fin); fclose(fout); return OK; 9 Lettura e scrittura di strutture int fread(void *ptr, dimelemento, numelementi, FILE *fp); int fwrite(void *ptr, dimelemento, numelementi, FILE *fp); 10

Esempio con file binario (1) /*Gestione file Persone (1)*/ typedef struct char nome[20]; char cognome[20]; char indirizzo[50]; Persona; typedef char CodFisc[16]; typedef struct char nome[20]; char cognome[20]; char indirizzo[50]; CodFisc CodiceFiscale; NuovaPersona; /* I file Persone, CodiciFiscali e Nuove Persone si suppongono aperti dal main. pp, cf e np fanno riferimento ai tre file in questione */ int AggiornaPersone (FILE *pp, FILE *cf, FILE *np) Persona PersonaCorrente; CodFisc CodFiscCorrente; NuovaPersona NuovaPersonaCorrente; 11 Esempio con file binario (2) rewind(pp); rewind(cf); rewind(np); /*Gestione file Persone (2)*/ /* Rende possibile le seguenti operazioni di lettura e scrittura sul file identificato da pp, iniziando dal primo byte del file.*/ while (fread(&personacorrente,sizeof(persona),1,pp)!= 0) /* Finché non si è raggiunta la fine del file */ fread(&codfisccorrente,sizeof(codfisc),1,cf); strcpy(nuovapersonacorrente.nome, PersonaCorrente.nome); strcpy(nuovapersonacorrente.cognome,personacorrente.cognome); strcpy(nuovapersonacorrente.indirizzo, PersonaCorrente.indirizzo); strcpy(nuovapersonacorrente.codicefiscale, CodFiscCorrente); fwrite(&nuovapersonacorrente,sizeof(nuovapersona),1,np); 12

Accesso diretto (1) int fseek(file *fp, long offset, int refpoint) SEEK_SET : scostamento rispetto all inizio del file, SEEK_CUR : scostamento rispetto alla posizione corrente, SEEK_END : scostamento rispetto alla fine del file. long ftell(file *fp) rewind(f) equivale a: fseek (f, 0, SEEK_SET); 13 Accesso diretto (2)... /*Inversione del contenuto di un file numint di interi (1)*/ main () FILE *f; long int inizio, fine; int tempi, tempf; unsigned int dim; if ((f = fopen ("numint", "rb+")) == NULL) puts ("Non è stato possibile aprire il file numint"); /* più efficiente della printf per la stampa di un messaggio dato che non richiede la scansione e l interpretazione della stringa di controllo */ exit(1); /* La funzione exit provoca una conclusione non anomala del programma e la restituzione del controllo al sistema operativo */ 14

Accesso diretto (3) /*Inversione del contenuto di un file numint di interi (2)*/... inizio = 0; dim = sizeof(int); fseek (f, dim, SEEK_END); /* SEEK_END è una costante definita nel file stdio.h. Ha valore 2 */ fine = ftell (f); while (inizio < fine) fseek (f, inizio, SEEK_SET); fread (&tempi, dim, 1, f); fseek (f, fine, SEEK_SET); fread (&tempf, dim, 1, f); /* È necessario riposizionarsi */ fseek (f, fine, SEEK_SET); fwrite (&tempi, dim, 1, f); fseek (f, inizio, SEEK_SET); fwrite (&tempf, dim, 1, f); inizio = inizio + dim; fine = fine dim; 15 Programma Servizio Voli (1) /* Programma ServizioVoli (1)*/ void main () [dichiarazioni varie: esse dovranno definire le variabili necessarie per far riferimento ai file che memorizzano l'archivio, le varie funzioni destinate alla sua gestione in relazione alle operazioni richieste, le variabili e i tipi associati all'archivio e le variabili e tipi necessari per la realizzazione del menu] Fine = false; do [RipulisciLoSchermo] puts ("\nsono disponibili le seguenti operazioni. Per selezionare un'operazione premere il tasto indicato alla destra dell'operazione e il carattere di Invio.\n"); /* Ricordiamo che puts inserisce dopo la stringa un newline ottenendo l'andata a capo */ puts ("Prenotazione volo: P"); puts ("Cancellazione di una prenotazione: C"); puts ("Inserimento in lista di attesa: A"); puts ("Fine operazioni: F"); Risposta = getchar (); 16

/* Programma ServizioVoli (2)*/ Risposta = getchar (); switch (Risposta) case 'P': ServiPrenotazioni(); break; case 'C': ServiCancellazioni(); break; case 'A': ServiListaAttesa(); break; case 'F': Fine = true; break; while (Fine == false); [RipulisciLoSchermo] puts ("\n\n\narrivederci\n"); Programma Servizio Voli (2) 17 Programma Servizio Voli (3) /* Programma ServizioVoli (3)*/ #define MAXPOSTI 350 typedef struct char Cognome[30]; char Nome[30]; Passeggero; typedef struct int NumVolo; char Data[10]; Passeggero Prenotazioni[MAXPOSTI]; Passeggero ListaAttesa[100]; DescrizioneVolo; 18

Programma Servizio Voli (4) /* Programma ServizioVoli (4)*/ boolean char FILE Fine; Risposta; *av; /* Puntatore al descrittore del file ArchivioVoli */ void ServiPrenotazioni (void); /* Esegue, se possibile, la prenotazione richiesta. In caso contrario, chiede automaticamente all'utente se desidera essere messo in lista di attesa. Se la risposta è positiva, chiama la funzione ServiListaAttesa senza bisogno di ritornare al menu principale. Dopo l'esecuzione della funzione ServiListaAttesa, termina anche la ServiPrenotazioni. L'esecuzione della funzione comporta l'interazione con l'utente attraverso un opportuno menu in cui vengono chiesti all'utente il numero e la data del volo desiderato, il cognome e il nome del passeggero. Dopo aver ottenuto i dati richiesti la funzione accede all'archivio e provvede alle necessarie operazioni di interrogazione e aggiornamento */ 19 Programma Servizio Voli (5) /* Programma ServizioVoli (5)*/ void ServiCancellazioni (void); /* Vengono chiesti, tramite opportuno menu, i dati del passeggero e l'identificazione del volo al quale si intende rinunciare. Viene cancellato il passeggero dalla relativa lista. Inoltre, se la lista d'attesa del volo non è vuota, si estrae il suo primo elemento e lo si inserisce nella lista delle prenotazioni. Viene quindi scritto un messaggio sul terminale che avvisa l'operatore che un elemento della lista d'attesa ha ora la sua prenotazione confermata */ void ServiListaAttesa(void); /* Vengono chieste le solite informazioni e viene inserito il passeggero nella lista d'attesa desiderata */ 20