Gestione dei file. File di testo e binari
|
|
|
- Oliviero Cosentino
- 9 anni fa
- Visualizzazioni
Transcript
1 Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile leggere il file e/o scrivere nuovi contenuti Dopo l apertura, il puntatore di lettura/scrittura e posizionato all inizio del file Il puntatore di lettura/scrittura e spostato in avanti a seguito di operazioni di lettura e scrittura. Lo spostamento e funzione del numero di byte letti o scritti. 1 File di testo e binari In funzione del tipo di contenuto di un file, distinguiamo: file di testo file binari contengono caratteri stampabili e informazioni interpretabili da un umano contengono dati di vario genere (mix di caratteri stampabili e non) File di testo C 4C 4F 0A H E L L O \n File di binario CC 36 4E FC 2 1
2 Apertura: Uso dei file (apertura/chiusura) FILE * fopen (char * pathname, char * mode) pathname: mode: percorso completo del file da aprire modalita di apertura r lettura w creazione e scrittura r+ lettura e scrittura (file gia esistente) w+ creazione, lettura e scrittura a scrittura in append (alla fine del file) b file binario (se non specificato e un file di testo) Chiusura: int fclose (FILE * f) 3 Uso dei file di testo (lettura/scrittura) Scrittura: int fprintf (FILE *f, char * format, ) Lettura: int fscanf (FILE *f, char * format, ) Stessa modalita di funzionamento di printf e scanf 4 2
3 Uso dei file di testo, esempio f = fopen ( dati.txt, w ); // creazione e apertura in scrittura fprintf (f, %d\n, dati [i]); // scrittura dei dati 5 Uso dei file di testo, esempio f = fopen ( dati.txt, r ); // apertura in lettura fscanf (f, %d, & dati [i]); // lettura dei dati 6 3
4 File di testo dati [0] = 5 dati [1] = 10 dati [2] = 4 dati [3] = 43 dati [4] = 7 File dati.txt 35 0A A 34 0A A 38 0A 5 \n 1 0 \n 4 \n 4 3 \n 8 \n File dati.txt aperto con il blocco note 7 Uso dei file di binari (lettura/scrittura) La scrittura/lettura avviene specificando il puntatore al blocco di dati da leggere/scrivere e la dimensione dei dati da leggere/scrivere Scrittura: int fwrite (void * ptr, int size, int num, FILE *f) Lettura: int fread (void * ptr, int size, int num, FILE *f) ptr puntatore al blocco di dati da trasferire size dimensione di ogni blocco dati num numero di blocchi da trasferire f file su cui leggere/scrivere (precedentemente aperto) valore di ritorno: numero dei blocchi trasferiti 8 4
5 Uso dei file binari, esempio f = fopen ( dati.bin, wb ); // creazione e apertura in scrittura // file binario fwrite (& dati[i], sizeof (int), 1, f); // scrittura dei dati 9 File binari - fwrite fwrite (& dati[i], sizeof (int), 1, f); Puntatore all area di memoria che contiene i dati da trasferire Dimensione (in byte) dei dati da trasferire (trasferiamo un elemento del vettore, quindi un intero) Numero di elementi da trasferire (trasferiamo un solo elemento del vettore) File su cui scrivere Scrivere l intero vettore fwrite (& dati[0], sizeof (int), VECTOR_SIZE, f); 10 5
6 Uso dei file binari, esempio f = fopen ( dati.bin, rb ); // apertura in lettura // file binario fread (& dati[i], sizeof (int), 1, f); // lettura dei dati 11 File binari dati [0] = 5 dati [1] = 10 dati [2] = 4 dati [3] = 43 dati [4] = 7 Ogni elemento (numero intero) occupa 4 byte File dati.bin A B elemento 0 elemento 1 elemento 2 elemento
7 Gestione dell end-of-file fread (& dati[i], sizeof (int), 1, f); fscanf (f, %d, & dati[i]); C e un loop che dice quanti elementi occorre leggere Stiamo dunque supponendo che il numero di elementi del file sia noto a priori Se questo numero non e noto, occorre leggere il file fino alla sua fine Occorre dunque sapere quanto abbiamo raggiunto la fine del file. La funzione: int feof (FILE * f) restituisce 1 se abbiamo raggiunto la fine del file f, 0 altrimenti 13 File binari: gestione dell eof f = fopen ( dati.bin, rb ); // apertura in lettura // file binario i = 0; while (!feof (f)) { fread (& dati[i], sizeof (int), 1, f); // lettura dei dati i++; 14 7
8 File binari: gestione dell eof Implementazione corretta f = fopen ( dati.bin, rb ); // apertura in lettura // file binario i = 0; while (fread (& dati[i], sizeof (int), 1, f) == 1) { // lettura e controllo i++; 15 File di di testo: gestione dell eof Implementazione corretta f = fopen ( dati.bin, r ); // apertura in lettura i = 0; while (fscanf (f, %d,& dati[i]) == 1) { // lettura e controllo i++; 16 8
9 Case-Study: una rubrica telefonica #include <string.h> #define FILENAME "rubrica.bin" typedef struct { char cognome [40]; char nome [40]; char telefono [30]; t_elemento_rubrica; 17 Case-Study: una rubrica telefonica int main (int argc, char * argv[]) { int choice; do { printf ("0- Fine\n"); printf ("1- Inserisci nominativo\n"); printf ("2- Cerca nominativo\n"); scanf ("%d", &choice); switch (choice) { case 1: insert_name (); break; case 2: search_name (); break; while (choice!= 0); 18 9
10 Case-Study: una rubrica telefonica void insert_name (void) { t_elemento_rubrica e; printf ("Cognome :"); scanf ("%s", e.cognome); printf ("Nome :"); scanf ("%s", e.nome); printf ("Telefono:"); scanf ("%s", e.telefono); f = fopen (FILENAME, "ab"); // append = apertura in scrittura alla // fine del file printf ("Errore di apertura del file.\n"); fwrite (&e, sizeof (t_elemento_rubrica), 1, f); 19 Case-Study: una rubrica telefonica void search_name (void) { char cognome [40]; t_elemento_rubrica e; printf ("Inserisci il cognome da cercare :"); scanf ("%s", cognome); f = fopen (FILENAME, "rb"); printf ("Errore di apertura del file.\n"); while (fread (&e, sizeof (t_elemento_rubrica), 1, f) == 1) { if (strcmp (e.cognome, cognome) == 0) { printf ("Cognome : %s\n", e.cognome); printf ("Nome : %s\n", e.nome); printf ("Telefono : %s\n", e.telefono); 20 10
11 ESERCIZIO SULLE CODE + FILES Realizzare un sistema informatico che consenta di smistare l accesso agli sportelli di una segreteria studenti. Si supponga la presenza di tre sportelli e si consideri la seguente operativita : 1. Lo studente inserisce i propri dati (cognome, nome e numero di matricola) 2. Il sistema sceglie lo sportello con minor gente in fila e accoda lo studente 3. Lo studente riceve dal sistema l informazione sul numero di sportello sul quale egli e stato accodato ed il numero di persone che si trovano in coda a quello sportello. 4. Ogni addetto allo sportello interroga il sistema per sapere il prossimo studente da servire e per conoscere il numero di studenti in fila davanti al suo sportello. 5. All orario di chiusura, deve essere possibile registrare lo stato delle code in modo da ripristinare i turni nel giorno successivo Corrado Santoro Laboratorio di Informatica Lezione 9 CdS Ing. Informatica Universita di Catania 21 11
Gestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
Scrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
Linguaggio C: i file
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa
Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
Gestione dei File. dischi nastri cd
Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione
I files in C. A cura del prof. Ghezzi
I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files
Esercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind
Esercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da
Consideriamo un vettore allocato dinamicamente
Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero
Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
Fondamenti di Informatica T. Linguaggio C: File
Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002
I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi [email protected] Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti
File e puntatori a file
File e puntatori a file Vitoantonio Bevilacqua [email protected] La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di
Programmazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato [email protected] www.cs.unicam.it/massimo.callisto LEZIONE
IL CONCETTO DI FILE. È illecito operare oltre la fine del file.
IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni
Struttura dati FILE. Concetto di FILE
Struttura dati FILE Concetto di FILE Per poter mantenere disponibili dei dati tra diverse esecuzioni di un programma (PERSISTENZA dei dati), è necessario poterli archiviare su memoria di massa. Un file
File binari e file di testo
I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file
Fondamenti di Informatica
Fondamenti di Informatica Gestione dei File in MATLAB Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Gestione dei file in MATLAB OUTLINE Caratteristiche
Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
Matlab: Gestione avanzata dei file
Matlab: Gestione avanzata dei file Informatica B File 2 Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare ad esistere indipendentemente dalla vita del programma
Gestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
I File. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centarle.
I File Il file e l unita logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centarle. Generalmente un file
Esercizio 1 Liste: calcolo perimetro di un poligono
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di
Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.
Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una
Input/output in C e in C++
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni
Esercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C
CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files
Esercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Linguaggio C La libreria standard
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C La libreria standard 2001 Pier Luca Montessoro - Davide Pierattoni
Lab 10 Gestione file di testo
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 10 Gestione file di testo Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome
Esercitazione 12. Esercizi di Ricapitolazione
Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,
GESTIONE DEI FILE IN C
GESTIONE DEI FILE IN C Il concetto di file.. è una parte logicamente contigua del contenuto di un dispositivo! Deve essere capace di memorizzare grandi quantità di dati! I dati memorizzati devono sopravvivere
Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura
Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione
per leggere caratteri: getchar(void); Laboratorio di linguaggi
Lettura e scrittura di caratteri per leggere caratteri: getchar(void); Laboratorio di linguaggi per scrivere caratteri: putchar(int); Le molte volte l input viene bufferizzato fino al tasto ENTER 1 2 Lettura
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti
Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla
puntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
