FILE BINARI FILE BINARI

Documenti analoghi
FILE BINARI FILE BINARI

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

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

! 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. I file di testo non sono indispensabili: sono semplicemente comodi!

FILE BINARI. 8QILOHELQDULRqXQDVHTXHQ]DGLE\WH

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

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

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

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

GESTIONE DEI FILE IL CONCETTO DI FILE APERTURA E CHIUSURA DI FILE APERTURA DI FILE LETTURA DI FILE FILE IN C

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

LA LIBRERIA STANDARD DEL C

snapshot della memoria rappresentazioni interne binarie di numeri immagini, audio, musica, volendo, anche caratteri

Input/output console file caratteri stringhe formattato ascii binari

Laboratorio di Programmazione

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

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

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma

File binari e file di testo

file fisico file logico

Input/Output su disco

Gestione dei File. Credits Prof. Campi

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

Operazioni su file di caratteri

I files in C. A cura del prof. Ghezzi

File qualche nota riassuntiva Che cos è un file? È un astrazione fornita dal sistema operativo, per consentire la memorizzazione di informazioni su

Struttura dati FILE. Concetto di FILE

Struttura dati FILE. Motivazioni: memorie a confronto

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott.

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

Linguaggio C: i file

I file di dati. Unità didattica D1 1

Esercitazioni di Fondamenti Informatica - Modulo A

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

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

puntatori Lab. Calc. AA 2006/07 1

Gestione dei file in C

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

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

Esercizi. I File ed il C

Streams e disk files

Gestione dei file in C

Input/Output su File

Stringhe. Stringhe costanti. t[0] t[1] t[2] t[3] t[4] s o l e \0. Esempio. char t[5] = { l, u, n, a, \0 }; definisce l array

Rappresentazione di interi

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

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

Gestione dei File. dischi nastri cd

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

Gestione dei file. File di testo e binari

Il linguaggio C. Breve panoramica su stdio.h

ESEMPIO COMPLETO FILE BINARIO

Precisazione sui tipi in ANSi C

Esercitazione di Reti degli elaboratori

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

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

File e puntatori a file

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

File file di testo file binari

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

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

ARCHIVI E FILE. Prof. Ciaschetti

APERTURA E CHIUSURA FILE (FUNZIONI FOPEN E FCLOSE)

Lezione 22: Input/Output e Files

Files in C endofile

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

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

Rappresentazione di dati come testo e in forma binaria

Introduzione al C. Stream e disk file

Fondamenti di Informatica

file informatica e laboratorio di programmazione Alberto Ferrari Informatica e Laboratorio di Programmazione

La gestione dei file in C

Linguaggio C Gestione File

LP1 Lezione 13: i File in C. Maurizio Tucci

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t))

PROVA SCRITTA 23 MARZO 2010

Lezione 11: Liste a Puntatori e Input/Output

INPUT E OUTPUT DI VALORI NUMERICI

Corso sul linguaggio Java

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Stringhe e allocazione dinamica della memoria

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

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!

MATLAB Alcune funzioni utili: fprintf, length, size

Informatica Generale --- Scritto del XX Settembre 2002

Caratteri e stringhe

Impariamo a programmare in. Lezione 7

Il linguaggio C I file

Laboratorio di Informatica I

Laboratorio di Informatica

Cosa serve per cominciare?

Aritmetica dei puntatori

Laboratorio di Algoritmi e Strutture Dati

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

Transcript:

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 qualsiasi natura "fotografie" della memoria rappresentazioni interne binarie di numeri immagini, audio, musica,...volendo, anche caratteri I file di testo non sono indispensabili: sono semplicemente comodi FILE BINARI Un file binario è una sequenza di byte Può essere usato per archiviare su memoria di massa qualunque tipo di informazione Input e output avvengono sotto forma di una sequenza di byte La fine del file è rilevata in base all esito delle operazioni di lettura non c'è EOF, perché un file binario non è una sequenza di caratteri qualsiasi byte si scegliesse come marcatore, potrebbe sempre capitare nella sequenza

FILE BINARI Poiché un file binario è una sequenza di byte, sono fornite due funzioni per leggere e scrivere sequenze di byte fread() legge una sequenza di byte fwrite()scrive una sequenza di byte Essendo pure sequenze di byte, esse non sono interpretate. Quindi, possono rappresentare qualunque informazione (testi, numeri, immagini...) OUTPUT BINARIO: fwrite() Sintassi: int fwrite(addr, int dim, int n, FILE *f); scrive sul file n elementi, ognuno grande dim byte (complessivamente, scrive quindi n dim byte) gli elementi da scrivere vengono prelevati dalla memoria a partire dall indirizzo addr restituisce il numero di elementi (non di byte) effettivamente scritti, che possono essere meno di n

INPUT BINARIO: fread() Sintassi: int fread(addr, int dim, int n, FILE *f); legge dal file n elementi, ognuno grande dim byte (complessivamente, tenta di leggere quindi n dim byte) gli elementi da leggere vengono scritti in memoria a partire dall indirizzo addr restituisce il numero di elementi (non di byte) effettivamente letti, chepossono essere meno di n se il file finisce prima. Controllare il valore restituito è il solo modo per sapere cosa è stato letto, einparticolareper scoprireseilfileèfinito ESEMPIO 1 Salvare su un file binario numeri.dat il contenuto di un array di dieci interi In alternativa: fwrite(vet, 10*sizeof(int), 1, fp) FILE *fp; int vet[10] = {1,2,3,4,5,6,7,8,9,10}; if ((fp = fopen("numeri.dat","wb"))==null) fwrite(vet, sizeof(int), 10, fp); } L operatore sizeof è essenziale per la portabilità: la dimensione di int nonèfissa

Leggere da un file binario numeri.dat una sequenza di interi, scrivendoli in un array FILE *fp; int vet[40], i, n; } if ((fp = fopen("numeri.dat","rb"))==null) n = fread(vet,sizeof(int),40,fp); for (i=0; i<n; i++) printf("%d ",vet[i]); ESEMPIO 2 fread tenta di leggere 40 interi, ne legge meno se il file finisce prima n contiene il numero di interi effettivamente letti Scrivere su un file di caratteri testo.txt una sequenza di caratteri ESEMPIO 3 Dopo averlo creato, provare ad aprire questo file con un editor qualunque ( e il terminatore?) FILE *fp; int n; char msg[] = "Ah, l'esame\nsi avvicina!"; if ((fp = fopen("testo.txt","wb"))==null) fwrite(msg, strlen(msg)+1, 1, fp); } Un carattere in C ha sempre size=1 Scelta: salvare anche il terminatore

Leggere da un file di caratteri testo.txt una sequenza di caratteri, ponendoli in una stringa FILE *fp; char msg[80], n; if ((fp = fopen("testo.txt","rb"))==null) n = fread(msg, 1, 80, fp); } puts(msg); ESEMPIO 4 n contiene il numero di char effettivamente letti (che non ci interessa, perché tanto c è il terminatore ) ESEMPIO 5: OUTPUT DI NUMERI L uso di file binari consente di rendere evidente la differenza fra la rappresentazione interna di un numero e la sua rappresentazione esterna come stringa di caratteri in una certa base Supponiamo che sia int x = 31466; Che differenza c è fra: fprintf(file,"%d", x); fwrite(&x, sizeof(int), 1, file);

ESEMPIO 5: OUTPUT DI NUMERI Se x è un intero che vale 31466, internamente la sua rappresentazione è (su 16 bit): 01111010 11101010 fwrite() emette direttamente tale sequenza, scrivendo quindi i due byte sopra indicati fprintf() invece emette la sequenza di caratteri ASCII corrispondenti alla rappresentazione esterna del numero 31466, ossia i cinque byte 00110011 00110001 00110100 00110110 00110110 Se per sbaglio si emettessero su un file di testo (o su video) direttamente i due byte: 01111010 11101010 si otterrebbero i caratteri corrispondenti al codice ASCII di quei byte: êz ESEMPIO 6: INPUT DI NUMERI Analogamente, che differenza c è fra fscanf(file, "%d", &x); e fread(&x, sizeof(int), 1, file); nell ipotesi che il file (di testo) contenga la sequenza di caratteri 23? 2 3

ESEMPIO 6: INPUT DI NUMERI fscanf() preleva la stringa di caratteri ASCII carattere '2' 00110010 00110011 carattere '3' che costituisce la rappresentazione esterna del numero, e la converte nella corrispondente rappresentazione interna, ottenendo i due byte: 00000000 00010111 che rappresentano in binario il valore ventitre ESEMPIO 6: INPUT DI NUMERI fread() invece preleverebbe i due byte carattere '2' 00110010 00110011 carattere '3' credendoli già la rappresentazione interna di un numero, senza fare alcuna conversione Tale modo di agire porterebbe a inserire nella variabile x esattamente la sequenza di byte sopra indicata, che verrebbe quindi interpretata come il numero tredicimilacentosei