Gestione dei File C. Generalità

Documenti analoghi
Gestione dei File in C

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

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

Linguaggio C: i file

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

Introduzione al C. Stream e disk file

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

Esercizi. I File ed il C

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

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

Scrittura formattata - printf

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

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

Gestione dei File. dischi nastri cd

Gestione dei file. File di testo e binari

Struttura dei programmi C

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

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

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

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

Introduzione al Linguaggio C

GESTIONE DEI FILE IN C

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

Fondamenti di Informatica T. Linguaggio C: File

Gestione di files Motivazioni

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

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

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Struttura dati FILE. Concetto di FILE

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

Input/output in C e in C++

$QDOLVLGHOSURJUDPPDTXDGUDWR

Linguaggio C Gestione File

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

Fondamenti di Informatica

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.

Capitolo 11 Elaborazione di file

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

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Esercizi di programmazione in linguaggio C English Dictionary

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

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

Lezione 8. Sottoprogrammi

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

FILE BINARI FILE BINARI

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

I puntatori e l allocazione dinamica di memoria

puntatori Lab. Calc. AA 2007/08 1

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

Il linguaggio C. Notate che...

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Input/Output di numeri

Fondamenti di Informatica

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Lettura da tastiera e scrittura su monitor

LP1 Lezione 13: i File in C. Maurizio Tucci

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

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

Linguaggio C: Stringhe di caratteri e File

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Stringhe e allocazione dinamica della memoria

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

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

IL PRIMO PROGRAMMA IN C

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

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

Esercitazione 6. Array

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

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

Esercizio 1: Puntatori impiegati che sono manager

Matlab: Gestione avanzata dei file

Le funzioni, e le istruzioni di input/output

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

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

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

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

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

Espressione di chiamata di funzione

Laboratorio di Algoritmi e Strutture Dati

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Linguaggio C - sezione dichiarativa: costanti e variabili

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

4 GLI ARRAY E LE STRINGHE

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

Strategie di programmazione

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Corso sul linguaggio Java

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Transcript:

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 file stdio.h. Tali funzioni rendono possibile la lettura/scrittura in modo indipendente dalle caratteristiche proprie dei dispositivi di Input/Output. Le stesse funzioni possono essere utilizzate, ad esempio, sia per leggere un valore dalla tastiera sia per leggere un valore da un dispositivo di memoria di massa. Lo stesso vale per le funzioni di scrittura: le stesse operazioni possono essere utilizzate sia per la visualizzazione sullo schermo sia per scrivere un valore su un disco o una stampante. Ciò è possibile poichè il sistema di I/O C è caratterizzato da un'interfaccia indipendente dal dispositivo effettivo che si interpone tra il programmatore e il dispositivo. Tale interfaccia è chiamata flusso, mentre il dispositivo effettivo è chiamato file. 2 1

Flusso Il sistema di I/O C associa ad ogni dispositivo fisico un dispositivo logico chiamato flusso. Poichè tutti i flussi si comportano alla stessa maniera, possono essere utilizzate le stesse funzioni per la loro gestione. Esistono due tipi di flussi: flussi binari e di testo. Un flusso binario è formato da una sequenza di byte con una corrispondenza uno ad uno con i byte presenti sul dispositivo fisico. Un flusso di testo è una sequenza di caratteri generalmente suddivisa in linee terminate da un carattere di newline (\n). In un flusso di testo alcuni caratteri potrebbero essere tradotti. Ad esempio il newline può essere convertito sulla stampante, che costituisce il dispositivo fisico, in un ritorno a capo e salto a un nuova linea della testina. 3 File Un File è un qualsiasi dispositivo, da un disco a un terminale a una stampante. Per associare un flusso a un file è necessario un'operazione di apertura. Una volta aperto un file sarò possibile scambiare informazioni tra il file e il programma. Per eliminare l'associazione tra flusso e file è necessaria un'operazione di chiusura. Nel caso un file aperto in scrittura, l'eventuale contenuto del flusso viene scritto sul dispositivo fisico. 4 2

File Ogni flusso ha associato una struttura chiamata FILE contenente i seguenti campi: modalità di utilizzo del file (lettura, scrittura o lettura e scrittura); posizione corrente su file (indicante il prossimo byte da leggere o scrivere su file); un indicatore di errore di lettura/scrittura; un indicatore di end-of-file, indicante il raggiungimento della fine del file. Ogni operazione di apertura a file restituisce un puntatore a una variabile di tipo FILE. Per potere leggere e scrivere i file è necessario usare delle variabili di tipo puntatore a file, dichiarate nel seguente modo: FILE *pf; 5 fopen L'apertura di un file viene realizzata mediante la funzione fopen avente il seguente prototipo: FILE *fopen(const char *nomefile, const char *modalità); dove nomefile è una stringa di caratteri indicante il nome del file da aprire e modalità indica il modo in cui il file deve essere aperto. Se si verifica un errore in apertura del file, la fopen() restituisce un puntatore nullo. Volendo, ad esempio, aprire in scrittura il file test.txt scriveremo: FILE *pf; pf=fopen(``test.txt'',''w''); if(pf==null) printf(``impossibile aprire il file''); else In generale, prima di accedere ad un file occorre assicurarsi che la chiamata a fopen() sia stata eseguita con successo. 6 3

fopen MODALITA' r w a rb wb ab r+ w+ a+ r+b w+b a+b SIGNIFICATO Apre un file di testo in lettura Crea un file di testo in scrittura Apre un file di testo in modalità append Apre un file binario in lettura Crea un file binario in scrittura Apre un file binario in modalità append Apre un file di testo in lettura/scrittura Crea un file di testo in lettura/scrittura Crea o apre un file di testo in modalità append per lettura/scritura Apre un file binario in lettura/scrittura Crea un file binario in lettura/scrittura Crea o apre un file binario in modalità append per lettura/scrittura 7 fclose La chiusura di un file viene realizzata mediante la funzione fclose avente il seguente prototipo: int fclose(file *pf); dove pf è il puntatore restituito dalla fopen(). 8 4

feof() La funzione feof() restituisce un valore logico vero nel caso in cui è raggiunta la fine del file e zero in tutti gli altri casi. Il prototipo della feof è il seguente: int feof(file *pf) 9 fscanf, fprintf Le funzioni fscanf() e fprintf() vengono utilizzate per la lettura e la scrittura su file. Il loro comportamento è lo stesso delle funzioni scanf() e printf(). Il loro prototipo è il seguente: int fscanf(file *pf, const char *stringa_controllo,..); int fprintf(file * pf, const char *stringa_controllo,..); 10 5

Esempio: Lettura da file e visualizzazione sullo schermo #include <stdio.h> void main(void) { FILE *pf; int a; pf=fopen("numeri.txt","r"); if(pf) { while(!feof(pf)) { fscanf(pf,"%d\t",&a); printf("%d\n",a); else printf("errore"); 11 Esempio: Lettura da tastiera e scrittura su file #include <stdio.h> void main(void) { int num,a; FILE *pf; printf("quanti numeri vuoi inserire?"); scanf("%d",&num); pf=fopen("dati.txt","w"); if(pf) { for(;num>0;num--) { printf("inserisci un nuovo numero: "); scanf("%d",&a); fprintf(pf,"%d\t",a); else printf("errore"); 12 6

Scrittura e lettura delle informazioni (cognome, nome, matricola, media) relative a n studenti (1) #include <stdio.h> void main(void) { FILE *pf; char cognome[20],nome[20]; long matricola; double media; int i,nstud; printf("quanti studenti?\n"); scanf("%d",&nstud); pf=fopen("studenti.txt","w"); /* Apertura file*/ if(pf==null) printf("errore in scrittura\n"); else /* file aperto con successo */ { for(i=0;i<nstud;i++) { printf("cognome:"); scanf("%s",cognome); fprintf(pf,"cognome: %s\n",cognome); printf("nome: "); scanf("%s",nome); fprintf(pf,"nome: %s\n",nome); printf("matricola: "); scanf("%ld",&matricola); fprintf(pf,"matricola: %ld\n",matricola); printf("media: "); scanf("%lf",&media); fprintf(pf,"media: %lf\n",media); 13 Scrittura e lettura delle informazioni (cognome, nome, matricola, media) relative a n studenti (2) /* lettura da file */ pf=fopen("studenti.txt","r"); if(pf==null) printf("errore in lettura\n"); else { while (!feof(pf)) { fscanf(pf,"cognome: %s\n",cognome); printf("cognome: %s\n",cognome); fscanf(pf,"nome: %s\n",nome); printf("nome: %s\n",nome); fscanf(pf,"matricola: %ld\n",&matricola); printf("matricola: %ld\n",matricola); fscanf(pf,"media: %lf\n",&media); printf("media: %lf\n",media); 14 7