Struttura dati FILE. Motivazioni: memorie a confronto

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Struttura dati FILE. Motivazioni: memorie a confronto"

Transcript

1 Struttura dati FILE Motivazioni: memorie a confronto La memoria centrale (RAM) è tecnologia elettronica basata su Le memorie secondarie sono basate su tecnologie magnetiche (HD) o ottiche (CD, DVD) Conseguenze Le memorie elettroniche consentono un accesso ai dati molto più veloce Il costo per byte delle memorie non elettroniche è molto più basso, e quindi hanno dimensioni di un paio di ordini di grandezza più elevate. Si sta andando verso 1 Gbyte per RAM, 100 Gbyte per dischi PROBLEMA: Le memorie elettroniche sono volatili Programmazione - Michele Colajanni, 2006/

2 Motivazioni Necessità di gestione di grandi quantità di dati (anche per input/output) Necessità di persistenza dei dati, per esempio per mantenere disponibili informazioni tra diverse esecuzioni di un programma Necessità di utilizzare memorie di massa (si archiviano dati su memorie secondarie) Programmazione - Michele Colajanni, 2006/ Concetto di FILE Gestire (leggere e scrivere) informazioni su memorie di massa (es., disco) comporta operazioni molto complesse Il concetto FILE è un astrazione fornita dal sistema operativo In particolare, il sistema operativo consente al programmatore di considerare concettualmente l insieme di informazioni su disco come: una sequenza di registrazioni (record) di lunghezza potenzialmente illimitata (ma non infinita!) collegate ad un nome DATI Programmazione - Michele Colajanni, 2006/

3 Funzionamento Una testina di lettura/scrittura(concettuale) indica in ogni istante il record corrente All inizio, la testina si trova sulla prima posizione Dopo ogni operazione di lettura/scrittura, la testina si sposta sul record successivo E possibile operare su di un record alla volta E illegale tentare di leggere/scrivere oltre la fine del file (indicata con EOF) Programmazione - Michele Colajanni, 2006/ Tipi di file Esistono due grandi categorie di file dipendenti dalla modalità di accesso ai dati: File ad accesso sequenziale File ad accesso random (casuale)* *capire cosa significa casuale Programmazione - Michele Colajanni, 2006/

4 File in C Tutto il modello di coordinazione della Standard I/O Library del C è basato sul concetto di file Per gestire la corrispondenza fra il nome del file (come risulta al sistema operativo) ed una variabile del programma che rappresenta tale file, la Standard I/O Library definisce un apposito tipo: il tipo FILE In pratica, FILE è una struttura definita all interno dello header standard stdio.h, che l utente non ha necessità di conoscere nei dettagli e che spesso cambia da un ambiente (Compilatore+Sistema Operativo) all altro! Programmazione - Michele Colajanni, 2006/ File in C (cont.) Le strutture di tipo FILE non sono mai gestite direttamente dall utente, ma solo ed esclusivamente mediante le funzioni della Standard I/O Library Nei suoi programmi, il programmatore dovrà solo definire, ove necessario, dei puntatori a FILE La Standard I/O Library del C vede il file come uno stream di byte (=sequenza di byte), ma offre delle funzioni che consentono di distinguere fra: File di testo sequenza di caratteri File binario sequenza di byte Programmazione - Michele Colajanni, 2006/

5 File in C (cont.) A livello di sistema operativo, un file è denotato univocamente dal suo nome assoluto, che comprende il percorso ed il nome relativo In certi sistemi operativi, il percorso può comprendere il nome dell unità di memoria In DOS e Windows: C:\temp\prova1.c In UNIX e Linux: /usr/temp/prova1.c Programmazione - Michele Colajanni, 2006/ Sequenza di operazioni su file 1. Creazione 2. Apertura 3. Lettura/Scrittura 4. Chiusura Programmazione - Michele Colajanni, 2006/

6 Conseguenze dell apertura file Poiché un file è un entità del sistema operativo, per agire su di esso dall interno di un programma occorre stabilire una corrispondenza fra: il nome del file come risulta al sistema operativo un nome di variabile puntatore definita all interno del programma Questa operazione si chiama APERTURA DEL FILE, ed è necessaria per collegare il mondo esterno (del sistema operativo) con l ambiente del programma in esecuzione Programmazione - Michele Colajanni, 2006/ Conseguenze dell apertura file (cont.) Una volta aperto, il programma potrà poi agire sul file operando formalmente sulla variabile definita al suo interno Sarà il sistema operativo che provvederà ad effettuare realmente l operazione richiesta sul file associato a tale simbolo E possibile aprire più file contemporaneamente, associando ciascun file ad una variabile puntatore differente all interno del programma Programmazione - Michele Colajanni, 2006/

7 Apertura/creazione di un file Per aprire un file, la libreria stdio.h offre la funzione fopen(): FILE* fopen(char fname[ ], char modo[ ]) Apre il file su disco di pathname fname (è una stringa). Bisogna fare attenzione alle convenzioni dipendenti dal sistema operativo utilizzato (es., \ per i pathname di Windows oppure / per i pathname di Unix) L apertura avviene nel modo specificato (è una stringa) Restituisce un puntatore a FILE (che punta ad una struttura dati FILE appositamente creata in memoria centrale) Programmazione - Michele Colajanni, 2006/ Apertura/creazione di un file (cont.) fopen( file.dat, char modo[ ]) modo è una stringa di uno/due/tre caratteri che specifica come aprire il file: r apre in lettura (read): fopen( file.dat, r ) r+ apre in lettura/scrittura w crea in scrittura (write): fopen( file.dat, w ) Se il file esiste già, cancella tutti i dati senza avviso w+ crea in lettura/scrittura a apre o crea in aggiunta (append) alla fine del file a+ apre o crea in lettura e aggiunta (append) alla fine del file Programmazione - Michele Colajanni, 2006/ !!!

8 Apertura/creazione di un file (cont.) fopen( file.dat, char modo[ ]) I caratteri della stringa modo visti in precedenza possono essere seguiti opzionalmente dal carattere: t apertura del file in modalità testo (di default, quindi di solito si evita di indicarla). Es., fopen( file.dat, r ) = fopen( file.dat, rt ) b apertura del file in modalità binaria. Es., fopen( file.dat, rb ) Programmazione - Michele Colajanni, 2006/ Apertura/creazione di un file (cont.) Il valore restituito dafopen() è un puntatore a FILE, da usare in tutte le successive operazioni su quel file Tale puntatore è NULL in caso in cui l apertura sia fallita Vi sono molte più possibilità che fallisca l apertura di un file rispetto all allocazione di una struttura dinamica in memoria centrale QUINDI: prima di usare il file, controllare sempre il risultato di fopen() Programmazione - Michele Colajanni, 2006/

9 Esempi (apertura file testo) Apertura di un file di testo in lettura FILE *f; f = fopen("nomefile.dat","r"); Apertura di un file di testo in scrittura (= CREAZIONE di un file) FILE *f; f = fopen("nomefile.dat","w"); Apertura di un file di testo in aggiunta (in coda) FILE *f; f = fopen("nomefile.dat","a"); NOTA: La specifica del modo "t" (testo), essendo di default, di solito si omette Programmazione - Michele Colajanni, 2006/ Controllare l esito FILE *fp; fp = fopen("prova.txt","w"); if (fp==null) printf( Errore di apertura del file\n ); else { } NOTA: fopen() restituisce un puntatore NULL in caso di errore nell apertura del file (ad esempio, se non c è spazio su disco o il disco è protetto o il pathname è sbagliato) Programmazione - Michele Colajanni, 2006/

10 EOF La Standard I/O library mette a disposizione del programmatore anche EOF (=End Of File) A seconda del Sistema Operativo ci sono diverse combinazioni di tasti per inserire EOF da tastiera: Unix/Linux <return> <crtl> d Windows <ctrl> z Programmazione - Michele Colajanni, 2006/ Chiusura di un file Quando si è finito di operare su file, la corrispondenza interno-esterno dovrà essere eliminata mediante un operazione di CHIUSURA DEL FILE: int fclose(file*); ATTENZIONE Questa operazione garantisce che tutte le modifiche apportate sul file siano rese effettive a livello di disco. Nel caso in cui il programmatore dimentichi la chiusura, il sistema operativo la farà automaticamente al termine del programma (ma se il programma si interrompe ) Chiudere il file consente anche di recuperare risorse Programmazione - Michele Colajanni, 2006/

11 Due tipi di file Il modello di coordinazione della Standard I/O Library consente di distinguere fra: File di testo sequenza di caratteri File binario sequenza di byte Programmazione - Michele Colajanni, 2006/ FILE di testo

12 Operazioni sui file di testo Per operare sui file di testo, la libreria standard fornisce funzioni del tutto analoghe a quelle già viste per i canali di I/O predefiniti (tastiera e video): Input/Output a caratteri Input/Output a stringhe di caratteri Input/Output formattato A queste funzioni base, si aggiungono altre funzioni di utilità generale Programmazione - Michele Colajanni, 2006/ Ricordare Input/Output a caratteri int getchar(void); Legge un carattere, e restituisce il carattere letto (oppure EOF in caso di errore o di fine sequenza di input) int putchar(int c); Scrive un carattere, e restituisce il carattere scritto (o EOF se c è errore) Attenzione La funzione getchar() comincia a restituire caratteri solo quando è stato battuto INVIO da tastiera per inserire il carattere EOF. Per terminare la sequenza occorre digitare: <crtl> d (su Unix/Linux), <crtl> z (su Windows) Programmazione - Michele Colajanni, 2006/

13 Esempio Copiare l input standard (ciò che viene digitato sulla tastiera) sull output standard (il video) #include <stdio.h> main() { int c; while ((c = getchar())!= EOF) putchar(c); } Programmazione - Michele Colajanni, 2006/ Ricordare Input/Output a stringhe di caratteri char* gets(char s[ ]); legge una stringa da input (terminata da un newline) e la inserisce in s restituisce l indirizzo di s, oppure NULL (0) in caso di fine file o errore int puts(char s[ ]); scrive la stringa s sull output, aggiungendo un newline in fondo restituisce EOF in caso di errore, o un valore non negativo altrimenti Programmazione - Michele Colajanni, 2006/

14 Osservazione Dato che per ipotesi l I/O avviene leggendo e scrivendo caratteri, a rigore le uniche due funzioni indispensabili sono quelle per leggere e scrivere un singolo carattere Tutto il resto può essere costruito sopra di esse La scelta di fornire altre funzionalità (I/O a stringhe, I/O formattato) risponde quindi unicamente a criteri di comodità Programmazione - Michele Colajanni, 2006/ Confronto fra funzioni di I/O per console e per file di testo Funzioni console Funzioni per file int getchar(void); int putchar(int c); char* gets(char* s); int puts(char* s); int printf(char* fm, expr1,, exprn); int scanf(char* fm, addr1,...addrn); int fgetc(file* f); int fputc(int c, FILE* f); char* fgets(char* s, int n, FILE* f); int fputs(char* s, FILE* f); int fprintf(file* f, char*fm, expr1,...exprn); int fscanf(file* f, char* fm, addr1,...addrn); Programmazione - Michele Colajanni, 2006/

15 Funzioni di I/O per file di testo (cont.) getchar() fgetc(stdin) putchar(c) fputc(c,stdout) Altre funzioni feof() indica se si è incontrato l EOF rewind() riposiziona la testina di lettura/scrittura all inizio del file ftell() dà la posizione corrente della testina di lettura/scrittura nel file Programmazione - Michele Colajanni, 2006/ File ad accesso sequenziale feof() TRUE rewind() Programmazione - Michele Colajanni, 2006/

16 fflush() int fflush(file *f); Svuota la memoria tampone E buona norma di programmazione utilizzarlo prima della fclose() Quindi, la chiusura corretta è: fflush(fp); fclose (fp); Programmazione - Michele Colajanni, 2006/ Esercizio 1 Si memorizzi in un file di testo su disco tutto ciò che viene inserito da tastiera Programmazione - Michele Colajanni, 2006/

17 Esercizio 1 #include <stdio.h> main() { FILE *fp; fp = fopen("prova.txt","w"); if (fp==null) printf( Errore di apertura del file\n ); else { int c; while ((c=getchar())!=eof) fputc(c,fp); fclose(fp); } } ATTENZIONE: fopen() restituisce un puntatore NULL in caso di errore nell apertura del file (ad esempio, se non c è spazio su disco o il disco è protetto) Programmazione - Michele Colajanni, 2006/ Esercizio 2 Stampare a video il contenuto di un file di testo #include <stdio.h> main() { FILE *fp; fp = fopen("prova.txt","r"); if (fp==null) printf("errore di apertura del file\n"); else { int c; while ((c=fgetc(fp))!=eof) putchar(c); fclose(fp); } } Programmazione - Michele Colajanni, 2006/

18 Esercizio 3 Leggere da un file di testo dati.txt una sequenza di numeri interi di al più 100 elementi finché non si trova il primo elemento uguale a 0 (si ipotizza che un elemento uguale a 0 esista). Memorizzare tutti i numeri (escluso lo 0) in un vettore. continua Programmazione - Michele Colajanni, 2006/ main() { int vett[100], temp, i; FILE *puntf; puntf = fopen("dati.txt","r"); /* Attenzione al percorso */ if (puntf==null) printf("errore di apertura file\n"); else { i=0; /* Differenza fra primo elemento e altri */ fscanf(puntf, "%d", &temp); while (temp!=0) { vett[i]=temp; fscanf(puntf, "%d", &temp); i++; } fclose(puntf); } } Programmazione - Michele Colajanni, 2006/

19 Altre versioni ESERCIZIO 3.b: Leggere da un file di testo dati.txt una sequenza di numeri interi terminata da 0. Memorizzare in un vettore tutti i numeri negativi. ESERCIZIO 3.c: Leggere da un file di testo dati.txt una sequenza di numeri interi terminata da 0. Memorizzare in un vettore tutti i numeri compresi tra 30 e +30 escluso lo 0. Ordinare il vettore in modo crescente e stampare tutti i numeri positivi. ESERCIZIO 3.d: Leggere da un file di testo dati.txt una sequenza di caratteri terminata da *. Memorizzare in un vettore tutti i caratteri alfabetici. Programmazione - Michele Colajanni, 2006/ Esercizio 4 Scrivere in un file di testo valori_pos.txt tutti i numeri strettamente positivi di un vettore contenente 100 valori interi. Alla fine, inserire il valore -1 Programmazione - Michele Colajanni, 2006/

20 Esercizio 4 main() { int vett[100], temp, i; FILE *puntf; puntf = fopen("valori_pos.txt","w"); if (puntf==null) printf("errore di apertura file\n"); else { for (i=0; i<100; i++) if vett[i]>0 fprintf(puntf, "%d \n", vett[i]); fprintf(puntf, "%d \n", -1); } fclose(puntf); } Programmazione - Michele Colajanni, 2006/ Altri esercizi ESERCIZIO 4.b: Scrivere in un file di testo carat.txt tutti i caratteri di una stringa letta da input. Terminare la sequenza di caratteri del file con *. ESERCIZIO 4.c: Leggere da un file di testo dati_inp.txt una sequenza di numeri interi terminata da 0, e copiare in un vettore solo gli elementi positivi. Copiare tutti i valori del vettore compresi fra 10 e 100 in un file di testo dati_out.txt. ESERCIZIO 4.d: Come l esercizio 4.c. In più, stampare su schermo il contenuto del file dati_out.txt. [ Ricordare l uso di EOF: while (fscanf(puntf, %d,&temp)!=eof) printf(..); ] Programmazione - Michele Colajanni, 2006/

21 I/O standard File di I/O Il linguaggio C utilizza tre file che risultano aperti automaticamente, quando il programma include le relative librerie: Standard input (tipicamente tastiera): stdio Standard output (tipicamente video): stdout Standard error (tipicamente terminale): stderr Si accede a questi file tramite funzioni apposite, ma potrebbero anche essere utilizzati come file (con i nomi indicati sopra) Programmazione - Michele Colajanni, 2006/

22 FILE binari File binari Mentre il file di testo è una sequenza di caratteri, un file binario è una sequenza di byte Viene usato in C per archiviare su memoria di massa qualunque tipo di informazione che non sia un testo, in particolare: valori numerici (int, float, double, ) tipi definiti dall utente (struct, vettori, ) Programmazione - Michele Colajanni, 2006/

23 Nota Un file binario potrebbe anche essere usato per archiviare testi ma solitamente non conviene farlo, perché le funzioni disponibili per l I/O da file di testo sono più sofisticate e semplici da utilizzare di quelle disponibili per l I/O da file binario Programmazione - Michele Colajanni, 2006/ Operazioni su file binari Per operare sui file binari, la libreria standard I/O fornisce due funzioni: fread(), per leggere una sequenza di byte fwrite(), per scrivere una sequenza di byte Programmazione - Michele Colajanni, 2006/

24 fwrite() int fwrite(addr, int dim, int n, FILE *f); Scrive sul file n elementi, ognuno grande dim byte. Complessivamente, scrive n dim byte Gli elementi da scrivere vengono prelevati in memoria a partire dall indirizzo addr Come risultato, questa funzione restituisce il numero di elementi (non di byte!) effettivamente scritti (possono anche essere meno di n) Programmazione - Michele Colajanni, 2006/ fread() int fread(addr, int dim, int n, FILE *f); Legge dal file n elementi, ognuno grande dim byte (complessivamente, tenta di leggere n dim byte) Gli elementi da leggere vengono posti in memoria a partire dall indirizzo addr Restituisce il numero di elementi (non di byte!) effettivamente letti (possono essere meno di n, al limite anche zero in caso di fine file) Programmazione - Michele Colajanni, 2006/

25 Un problema noto Se bisognasse allocare 10 variabili int, quale valore indichiamo in dim? int fwrite(addr, int dim, int n, FILE *f); Al solito, dipende dall architettura e compilatore utilizzato Programmazione - Michele Colajanni, 2006/ una soluzione nota Per la portabilità dei programmi, come parametro di fwrite() e fread() conviene non utilizzare mai valori numerici assoluti! Conviene, invece, utilizzare: sizeof(<tipo di dato T>) Restituisce la quantità di memoria richiesta (in byte) per memorizzare valori di tipo T. Es., sizeof(int) Programmazione - Michele Colajanni, 2006/

26 Esercizio 1 Salvare su un file binario il contenuto di un vettore di 10 valori reali a doppia precisione Programmazione - Michele Colajanni, 2006/ #include <stdio.h> #include <stdlib.h> main() Esercizio 1 { FILE *fp; double vet[10]={1.2, 21.3, 1.5, 1.4, 9.5, 1.6, -8.7, -8., 4.3, 9.1}; } fp = fopen("numeri.dat","wb"); if (fp==null) printf("errore di apertura file\n"); else { fwrite(vet, sizeof(double), 10, fp); fclose(fp); } Perché basta il nome? Programmazione - Michele Colajanni, 2006/

27 Note sull esercizio Essendo vet il nome di un vettore, rappresenta già un indirizzo, quindi non occorre ricavarlo con l operatore & L operatore sizeof() è essenziale perché il programma sia portabile da una piattaforma all altra (si calcola il numero di byte per memorizzare un double a tempo di esecuzione) Si sarebbe anche potuto fare un ciclo di dieci fwrite(), uno per ogni double da scrivere, ma sarebbe stato inutilmente inefficiente nel caso di file binari (mentre sarebbe stato necessario nell eventualità di uso di file di testo) Programmazione - Michele Colajanni, 2006/ Confronto file testo vs. file binario (Scrivere su file un vettore di 100 elementi int) int vett[100]; FILE *puntf; puntf = fopen("valori_pos","w"); if (puntf==null) printf("errore di apertura file\n"); else for (i=0; i<100; i++) fprintf(puntf, "%d \n", vett[i]); file testo puntf = fopen("valori_pos","wb"); if (puntf==null) printf("errore di apertura file\n"); else fwrite(vett, sizeof(int), 100, puntf); file binario Programmazione - Michele Colajanni, 2006/

28 Esercizio 2 Leggere da un file binario il contenuto di un vettore di 50 valori int ed inserirli in un array Programmazione - Michele Colajanni, 2006/ #include <stdio.h> #include <stdlib.h> Esercizio 2 main() { FILE *fp; int vet[50]; fp = fopen("numeri.dat", rb"); if (fp==null) printf("errore di apertura file\n"); else { fread(vet, sizeof(int), 50, fp); fclose(fp); } } Programmazione - Michele Colajanni, 2006/

29 Risultato di fwrite() e fread() La funzione fwrite() restituisce il numero di elementi (non di byte!) effettivamente scritti che potrebbero essere meno di quelli specificati La funzione fread() restituisce il numero di elementi (non di byte!) effettivamente letti che potrebbero essere meno di quelli specificati Se restituiscono 0 (o in alcuni linguaggi C, un valore negativo), ci sono stati problemi in lettura o scrittura E buona norma di programmazione utilizzare il valore restituito, prendendo eventuali provvedimenti Programmazione - Michele Colajanni, 2006/ #include <stdio.h> #include <stdlib.h> Esempio main() { FILE *fp; int i; double vet[10]={1.2, 21.3, 1.5, 1.4, 9.5, 1.6, -8.7, -8., 4.3, 9.1}; fp = fopen("numeri.dat","wb"); if (fp==null) printf("errore di apertura file\n"); else { i=fwrite(vet, sizeof(double), 10, fp); if (i<=0) printf("errore in scrittura\n"); else printf( Sono stati scritti %d elementi\n, i); fclose(fp); } } Molto utile anche per controllo Programmazione - Michele Colajanni, 2006/

30 File ad accesso casuale I file binari sono alla base della realizzazione di file ad accesso casuale A differenza dei file ad accesso sequenziale, i record dei file ad accesso casuale hanno la stessa dimensione Poiché ogni record ha la stessa lunghezza, la posizione di un record i-esimo all interno del file può essere calcolata semplicemente. Quindi, è possibile accedere all i-esimo record senza dover leggere i precedenti (i-1) record Se [1 record = 4 byte] posizione del 5 record = 20 byte Programmazione - Michele Colajanni, 2006/ Funzioni per l accesso casuale fseek() sposta la testina di lettura/scrittura in una posizione a scelta nel file ftell() restituisce la posizione attuale Programmazione - Michele Colajanni, 2006/

31 fseek() int fseek(file *f, int pos, int K); pos denota lo spostamento in byte (può essere anche un valore negativo) K denota un parametro che può avere tre valori: SEEK_SET (spostamento a partire dall inizio del file) 0 SEEK_CUR (spostamento a partire dalla posizione attuale) 1 SEEK_END (spostamento a partire dalla fine del file) 2 fseek() restituisce 0 se lo spostamento avviene con successo, altrimenti restituisce un valore negativo (-1) Programmazione - Michele Colajanni, 2006/ Esempio fseek(fp, 5, SEEK_CUR) Che tipo di dati sono memorizzati nel file? Programmazione - Michele Colajanni, 2006/

32 ftell() int ftell(file *f); Restituisce la posizione della testina di lettura/scrittura nel file *f Il valore della posizione è assoluto, cioè riferito all inizio del file Se si verifica un errore, viene restituito in valore negativo: -1 Programmazione - Michele Colajanni, 2006/ FILE e struct

33 File e struct I file ed in particolare i file binari sono la struttura dati principale per gestire grandi quantità di dati eterogenei, quali quelli che tipicamente si riferiscono ad archivi (per es., l anagrafe) Esempio: scrivere un nome sul file agenda Programmazione - Michele Colajanni, 2006/ main() { struct persona { char nome[20]; char cognome[20]; int telefono; } struct persona *p; FILE *puntf; [ ] puntf = fopen( agenda.txt", w"); if (puntf==null) printf("errore di apertura file\n"); else { fprintf(puntf, "%s,%s,%d", p->scheda.nome, p->scheda.cognome, p telefono); fclose(puntf); } } Programmazione - Michele Colajanni, 2006/

34 In memoria centrale: Array di struct Strutture dati utilizzate In memoria secondaria: File con record di struct Programmazione - Michele Colajanni, 2006/ Rappresentazione struct persona { char codice[7]; char Nome[20]; char Cognome[20]; int Reddito; int Aliquota; } ; Elemento univoco typedef struct persona Persona; Programmazione - Michele Colajanni, 2006/

35 Esempio funzione ricerca elemento su file #include <stdio.h> #include <ctype.h> FILE *fp; int ricerca_file(char *Name, char K[ ], Persona *P) { int i=0, trovato=0; if ((fp=fopen(name,"rb"))==null) printf( Errore\n ); else while (fread(p, sizeof(persona), 1, fp)>0 &&!trovato) if (strcmp(p->chiave, K)==0) trovato=1; return (trovato); } Programmazione - Michele Colajanni, 2006/ Osservazioni conclusive I file sono una delle struttura dati fondamentali per la soluzione di problemi reali Infatti, nella maggior parte dei casi reali, i dati non si leggono da input e non si stampano su video, ma si leggono da file e si salvano su file Per questo motivo, si rende necessario gestire grandi quantità di dati su supporti di memoria secondaria in modo molto efficiente TEORIA E PRATICA DELLE BASI DI DATI (2 anno) I file saranno sempre inseriti nella prova pratica dell esame di Programmazione, quindi Programmazione - Michele Colajanni, 2006/

Struttura dati FILE. Concetto di FILE

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

Dettagli

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

Gestione dei file. Linguaggio ANSI C Input/Output - 13 Gestione dei file Necessità di persistenza dei file archiviare i file su memoria di massa. Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni

Dettagli

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

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale. 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

Dettagli

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

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa. dischi nastri cd GESTIONE DEI FILE I file possono

Dettagli

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

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Gestione dei file in C

Gestione dei file in C 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

Dettagli

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

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

Dettagli

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

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico 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

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

FILE BINARI FILE BINARI

FILE BINARI FILE BINARI FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

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

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

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

GESTIONE DEI FILE IL CONCETTO DI FILE APERTURA E CHIUSURA DI UN FILE OPERARE SUI FILE GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa Un file è una astrazione fornita

Dettagli

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

GESTIONE DEI FILE persistenza archiviare file astrazione fornita dal sistema operativo dimensione potenzialmente illimitata ad accesso sequenziale GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa Un file è una astrazione fornita

Dettagli

I files in C. A cura del prof. Ghezzi

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

Dettagli

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 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

Dettagli

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

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie ! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente

Dettagli

Introduzione al C. Stream e disk file

Introduzione al C. Stream e disk file Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Gestione dei File. dischi nastri cd

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

Dettagli

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

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp. Introduzione L elaborazione dei files in C D.D. cap. 11+ pp. 569-572 K.P. pp. 581-583 La memorizzazione dei dati nelle variabili e nei vettori è temporanea: tutti quei dati andranno persi quando il programma

Dettagli

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

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

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

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream

Dettagli

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

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

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale File in C 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 In C all interno della standard library

Dettagli

Linguaggio C Gestione File

Linguaggio C Gestione File Gestione File: Il file è l'unità logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati non limitata dalle dimensioni della memoria centrale. Nel linguaggio

Dettagli

Informazioni Utili. Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2005/06 Tutor: Loris Cancellieri

Informazioni Utili. Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2005/06 Tutor: Loris Cancellieri Fondamenti di Informatica L-B (L-Z) Esercitazioni A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Informazioni Utili Orario delle Esercitazioni Lunedì 14-16 Gruppo L Q Martedì 16-18

Dettagli

La gestione dei file in C

La gestione dei file in C Gestione dei file La gestione dei file in C Il file è un astrazione molto ampia nella descrizione di un sistema informatico nastro di I/O supporto di comunicazione macchina/ambiente di ogni tipo (sensori,

Dettagli

FILE BINARI FILE BINARI

FILE BINARI FILE BINARI FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

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

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2013 Obiettivi Alcuni problemi aperti Il main() Allocazione dinamica della memoria Il salvataggio dei dati File File

Dettagli

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

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Gestione dei files Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Struttura del disco fisso Un disco fisso è composto da una serie di piatti sovrapposti Ogni piatto è

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Linguaggio C: i file

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

Dettagli

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

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli

Capitolo 5 -- Stevens

Capitolo 5 -- Stevens Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

GESTIONE DEI FILE IN C

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

Dettagli

FILE BINARI FILE BINARI FILE BINARI. OUTPUT BINARIO: fwrite()

FILE BINARI FILE BINARI FILE BINARI. OUTPUT BINARIO: fwrite() FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

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

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T Suggerimenti, note utili ed errori comuni Fondamenti di informatica T printf, scanf e stringhe di formato La lettura e scrittura di variabili in formato testo sono realizzate tramite printf e scanf sfruttando

Dettagli

Esercizi. I File ed il C

Esercizi. I File ed il C Politecnico di Milano Esercizi File di testo,, file binari I File ed il C Insieme omogeneo di dati, memorizzato su disco e caratterizzato da un nome La lunghezza di un file non è fissata a priori Astrazione

Dettagli

GESTIONE DEI FILE IL CONCETTO DI FILE

GESTIONE DEI FILE IL CONCETTO DI FILE GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa Un file è una astrazione fornita

Dettagli

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

I file. un file è una sorgente/destinazione di dati per diversi attori I file Il file è un astrazione molto ampia nella descrizione di un sistema informatico: Il concetto di file è uno snodo fondamentale di flussi di informazione anche tra applicazioni diverse un file è una

Dettagli

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

Dettagli

! I file di testo non sono indispensabili: sono semplicemente comodi 1. Sintassi:

! I file di testo non sono indispensabili: sono semplicemente comodi 1. Sintassi: Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare! È un'astrazione di memorizzazione assolu -tamente generale, usabile per memorizza -re su file informazioni di qualsiasi

Dettagli

File binari e file di testo

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

Dettagli

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII Gestione dei files DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

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

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. 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 centrale. Generalmente un

Dettagli

Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2007/08 Tutor: Barbara Pettazzoni

Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2007/08 Tutor: Barbara Pettazzoni Fondamenti di Informatica L-B (L-Z) Esercitazioni A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Informazioni Utili Orario delle Esercitazioni Martedì 14-16 Gruppo L Q Martedì

Dettagli

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

Una testina di lettura/scrittura (ideale) indica in ogni istante il record corrente: Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa! Un file è una astrazione fornita dal sistema

Dettagli

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

Sono file di caratteri, organizzati in linee. Ogni linea e` terminata da una marca di fine linea (newline, cara ttere '\n'). 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 centrale. Generalmente un

Dettagli

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

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1. Input /output e gestione dei file Premessa Iniziamo la lezione dicendo subito che per INPUT/OUTPUT si intende l insieme delle operazioni di ingresso ed uscita, ossia lo scambio di informazioni tra il programma

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I/O in C Il sistema di I/O del C è una interfaccia uniforme

Dettagli

Gestione di files Motivazioni

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)

Dettagli

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

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 lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Dettagli

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

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

Dettagli

Gestione dei File C. Generalità

Gestione dei File C. Generalità Gestione dei File C 1 Generalità Il linguaggio C non contiene alcuna istruzione di Input/Output. Tali operazioni vengono svolte mediante chiamate a funzioni definite nella libreria standard contenute nel

Dettagli

A. Ferrari. File. in C

A. Ferrari. File. in C File in C stream - flussi in C la gestine dei file avviene attravers un fluss di cmunicazine per utilizzare un file è necessari dichiarare una variabile di tip puntatre al file (ad un ggett di tip FILE)

Dettagli

Gestione dei file. File di testo e binari

Gestione dei file. File di testo e binari 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

Dettagli

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

GESTIONE DEI FILE. I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persistenza dei dati) è necessario poterli archiviare su memoria di massa. dischi nastri cd GESTIONE DEI FILE I file possono

Dettagli

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

I File. File. File di testo. Esempi di file di testo. Gestione di file in C. Gestione di file in C mylib.obj mylib.c #include mylib.h int leggi(int a[], int dim) { int i=0; while( scanf("%d", a+i) ) { i++; if( i>=dim ) break; return i; void scambia(int *a, int *b) { int t; t = *a; *a = *b; *b = t; mylib.h

Dettagli

Matrici, stringhe e I/O da file

Matrici, stringhe e I/O da file Memory Leakage (I) Se si perde il valore di un puntatore di una zona di memoria allocata, quella memoria non e piu utilizzabile dal processo e non e piu liberabile : rimane quindi proprieta del processo

Dettagli

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

FILE BINARI. I file di testo non sono indispensabili: sono semplicemente comodi! FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare. È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni

Dettagli

Capitolo 11 Elaborazione di file

Capitolo 11 Elaborazione di file 1 Capitolo 11 Elaborazione di file 11.1 Introduzione 2 I file Possono essere creati, modificati, ed elaborati da programmi scritti in C Sono utilizzati per la memorizzazione permanente dei dati La memorizzazione

Dettagli

Esercitazione 11. Liste semplici

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

Dettagli

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

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Scrittura formattata - printf

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

Dettagli

LP1 Lezione 13: i File in C. Maurizio Tucci

LP1 Lezione 13: i File in C. Maurizio Tucci LP1 Lezione 13: i File in C Maurizio Tucci mtucci@unisa.it 1 Il File: Dichiarazione Memorizzare dati in maniera non volatile In C (libreria ) è definito un tipo FILE che astrae il concetto di sequenza

Dettagli

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

Dettagli

LA LIBRERIA STANDARD DEL C

LA LIBRERIA STANDARD DEL C LA LIBRERIA STANDARD DEL C La libreria standard del C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente. Ogni file sorgente che

Dettagli

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

Sulla libreria standard, III. Manipolare file con stdio.h Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,

Dettagli

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

Il linguaggio C I file. mylib.h contribuenti.txt. #include <stdio.h> #define N 25 Paolucci,Enrico, 24000,23.0. fornitori.dat Il linguaggio C I file mylib.c #include mylib.h int leggi(int a[], int dim) { int i=0; while( scanf("%d", a+i) ) { i++; if( i>=dim ) break; return i; void scambia(int *a, int *b) { int t; t = *a; *a =

Dettagli

Laboratorio di Sistemi Operativi primavera 2009

Laboratorio di Sistemi Operativi primavera 2009 primavera 2009 Libreria standard di I/O Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano il file

Dettagli

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

FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto FILE: tipo operazione Istruì. prototipo esempi lettura di un carattere fgetc Int fgetc(file *flusso) Vedi sotto alla volta Scrittura di un fputc Int fputc(int ch, FILE *flusso); carattere alla volta Lettura

Dettagli

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

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file File Input/Output 1 Sommario Manipolazione sequenziale di file in C Funzioni di base per I/O di file 2 Manipolazione di file I file devono essere aperti prima dell uso Associa un puntatore a file a ogni

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

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.

Dettagli

caratteri, immagini, suoni, ecc.

caratteri, immagini, suoni, ecc. Il linguaggio C Input e output I flussi di I/O L uso di buffer Apertura e chiusura di file Lettura e scrittura di dati La selezione di un metodo di I/O I/O non bufferizzato L accesso diretto a file Input

Dettagli

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

SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES SOMMARIO SU LETTURA E SCRITTURA (I/O) DEGLI STANDARD FILES Con conversione di formato: int scanf (const char *format,... ) /* ritorna il numero di argomenti assegnati con successo altrimenti EOF se fine

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

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

FILE BINARI. I file di testo non sono indispensabili: sono semplicemente comodi 1 FILE BINARI Un file binario è una pura sequenza di byte, senza alcuna strutturazione particolare È un'astrazione di memorizzazione assolutamente generale, usabile per memorizzare su file informazioni di

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Cosa sono i file? Un file è un archivio di dati che puo essere registrato su un supporto di massa (testo, lettera, programma, archivio di dati, ecc.) Fondamenti di Informatica 12. Linguaggio C - Gestione

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. I file in Matlab

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. I file in Matlab INFORMATICA B Ingegneria Elettrica I file in Matlab I file I file sono contenitori di informazione: sequenze di byte associate ad un nome Sono memorizzati su memoria di massa (non- volatile) Possono continuare

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

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

Gestione dei File. Indice. Il file system in C. Principali operazioni sui file (dalla Standard Library) Esempi. Corso di Informatica A. 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

Dettagli

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

Corso di Laurea in Ingegneria Meccanica A-K. Fondamenti di Informatica A. A Gestione dei File. A.Pinto Corso di Laurea in Ingegneria Meccanica A-K Fondamenti di Informatica A. A. 2011-2012 1 Memorizzazione dei dati su dispositivi di memoria esterna Dispositivi di memorizzazione secondaria sono: dischi,

Dettagli

Trasformare array paralleli in array di record

Trasformare array paralleli in array di record Trasformare array paralleli in array di record Un array è una struttura di dati omogenea: gli elementi dell array sono tutti dello stesso tipo (che è il tipo dell array). A volte è necessario gestire informazioni

Dettagli

Gestione dei file di dati

Gestione dei file di dati Gestione dei file di dati 1. Le classi di input/output Il linguaggio C++ non dispone di proprie istruzioni per la gestione dell interazione con l utente. Si appoggia infatti su appositi comandi scritti

Dettagli

Lab 10 Gestione file di testo

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

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII

Dettagli

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

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 13/03/07 Nota Questi lucidi sono tratti

Dettagli

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 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

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Funzioni standard del C: Funzioni di I/O Allocazione dinamica della memoria Funzioni su stringhe di caratteri Testo di riferimento B.W. Kernighan & D.M. Ritchie

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

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

Dettagli

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

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

Dettagli

MATLAB: FILES. Informatica B/C - A.A. 2013/2014

MATLAB: FILES. Informatica B/C - A.A. 2013/2014 MATLAB: FILES Informatica B/C - A.A. 2013/2014 I FILE Contenitori di informazione: sequenze di byte associate ad un nome Sono memorizzati su memoria di massa (non-volatile) Possono continuare ad esistere

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

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

File binari, Operazioni sui File binari, Allocazione dinamica della memoria File binari, Operazioni sui File binari, Allocazione dinamica della memoria Vitoantonio Bevilacqua bevilacqua@poliba.it Parole chiave: File binari, Funzioni principali file binari, Funzione malloc, Allocazione

Dettagli

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

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

Dettagli